CMakeLists.txt 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  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}.Builder.Private.Object STATIC
  117. NAMESPACE Gem
  118. FILES_CMAKE
  119. audioenginewwise_builder_files.cmake
  120. TARGET_PROPERTIES
  121. O3DE_PRIVATE_TARGET TRUE
  122. COMPILE_DEFINITIONS
  123. PUBLIC
  124. ${AUDIOENGINEWWISE_COMPILEDEFINITIONS}
  125. INCLUDE_DIRECTORIES
  126. PRIVATE
  127. Source/Builder
  128. Source/Engine
  129. ${pal_dir}
  130. BUILD_DEPENDENCIES
  131. PUBLIC
  132. 3rdParty::Wwise
  133. AZ::AssetBuilderSDK
  134. Gem::AudioSystem.API
  135. PRIVATE
  136. Legacy::EditorCore
  137. )
  138. ly_add_target(
  139. NAME ${gem_name}.Builder GEM_MODULE
  140. NAMESPACE Gem
  141. FILES_CMAKE
  142. audioenginewwise_builder_shared_files.cmake
  143. COMPILE_DEFINITIONS
  144. PRIVATE
  145. AUDIO_ENGINE_WWISE_BUILDER
  146. INCLUDE_DIRECTORIES
  147. PRIVATE
  148. Source/Builder
  149. Source/Editor
  150. Source/Engine
  151. ${pal_dir}
  152. BUILD_DEPENDENCIES
  153. PUBLIC
  154. Gem::AudioSystem.API
  155. Gem::AudioSystem.Editor.API
  156. Legacy::CryCommon
  157. PRIVATE
  158. Gem::${gem_name}.Builder.Private.Object
  159. Gem::${gem_name}.Private.Object
  160. )
  161. ly_add_target(
  162. NAME ${gem_name}.Editor.Private.Object STATIC
  163. NAMESPACE Gem
  164. AUTORCC
  165. FILES_CMAKE
  166. audioenginewwise_editor_files.cmake
  167. TARGET_PROPERTIES
  168. O3DE_PRIVATE_TARGET TRUE
  169. COMPILE_DEFINITIONS
  170. PUBLIC
  171. ${AUDIOENGINEWWISE_COMPILEDEFINITIONS}
  172. INCLUDE_DIRECTORIES
  173. PRIVATE
  174. Source/Engine
  175. Source/Editor
  176. ${pal_dir}
  177. BUILD_DEPENDENCIES
  178. PUBLIC
  179. 3rdParty::Wwise
  180. Gem::AudioSystem.Editor.API
  181. Legacy::CryCommon
  182. PRIVATE
  183. Legacy::EditorCore
  184. Gem::${gem_name}.Private.Object
  185. RUNTIME_DEPENDENCIES
  186. Gem::AudioSystem.Editor
  187. )
  188. ly_add_target(
  189. NAME ${gem_name}.Editor GEM_MODULE
  190. NAMESPACE Gem
  191. FILES_CMAKE
  192. audioenginewwise_editor_shared_files.cmake
  193. COMPILE_DEFINITIONS
  194. PRIVATE
  195. AUDIO_ENGINE_WWISE_EDITOR
  196. INCLUDE_DIRECTORIES
  197. PRIVATE
  198. Source/Engine
  199. Source/Editor
  200. ${pal_dir}
  201. BUILD_DEPENDENCIES
  202. PUBLIC
  203. Gem::AudioSystem.API
  204. PRIVATE
  205. Gem::${gem_name}.Editor.Private.Object
  206. RUNTIME_DEPENDENCIES
  207. Gem::AudioSystem.Editor
  208. ${gem_name}.Builder
  209. )
  210. ly_create_alias(NAME ${gem_name}.Builders NAMESPACE Gem TARGETS Gem::${gem_name}.Builder)
  211. ly_create_alias(NAME ${gem_name}.Tools NAMESPACE Gem TARGETS Gem::${gem_name}.Editor)
  212. # Copy initial wwise project, audio banks and ATL libs if needed
  213. foreach(project ${LY_PROJECTS})
  214. file(REAL_PATH ${project} project_path BASE_DIRECTORY ${LY_ROOT_FOLDER})
  215. cmake_path(SET project_sounds_path "${project_path}/Sounds")
  216. if (NOT EXISTS ${project_sounds_path})
  217. message(STATUS "Copying default Wwise Project and banks to ${project_sounds_path}")
  218. cmake_path(SET sounds_path_source "${CMAKE_CURRENT_SOURCE_DIR}/../External/Sounds")
  219. file(COPY ${sounds_path_source} DESTINATION ${project_path})
  220. endif()
  221. cmake_path(SET audio_atl_path "${project_path}/libs/gameaudio/wwise")
  222. if (NOT EXISTS ${audio_atl_path})
  223. message(STATUS "Copying default ATL libraries to ${audio_atl_path}")
  224. cmake_path(SET audio_atl_path_source "${CMAKE_CURRENT_SOURCE_DIR}/../External/libs")
  225. file(COPY ${audio_atl_path_source} DESTINATION ${project_path})
  226. endif()
  227. endforeach()
  228. if (PAL_TRAIT_BUILD_TESTS_SUPPORTED)
  229. ly_add_target(
  230. NAME ${gem_name}.Editor.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
  231. NAMESPACE Gem
  232. FILES_CMAKE
  233. audioenginewwise_editor_tests_files.cmake
  234. audioenginewwise_editor_shared_files.cmake
  235. INCLUDE_DIRECTORIES
  236. PRIVATE
  237. Tests
  238. Source/Builder
  239. Source/Editor
  240. Source/Engine
  241. ${pal_dir}
  242. BUILD_DEPENDENCIES
  243. PUBLIC
  244. Gem::AudioSystem.API
  245. PRIVATE
  246. AZ::AzTest
  247. Gem::${gem_name}.Editor.Private.Object
  248. Gem::${gem_name}.Builder.Private.Object
  249. Legacy::CryCommon
  250. )
  251. ly_add_googletest(
  252. NAME Gem::${gem_name}.Editor.Tests
  253. )
  254. list(APPEND editorTestTargets ${gem_name}.Editor.Tests)
  255. ly_add_target_files(
  256. TARGETS
  257. ${editorTestTargets}
  258. FILES
  259. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/EmptyControl.xml
  260. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/MissingPreloads.xml
  261. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/MissingWwiseFileNode.xml
  262. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/MultiplePreloadsMultipleBanks.xml
  263. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/MultiplePreloadsOneBank.xml
  264. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/OnePreloadMultipleBanks.xml
  265. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/OnePreloadOneBank.xml
  266. OUTPUT_SUBDIRECTORY
  267. Test.Assets/Gems/AudioEngineWwise/AudioControls
  268. )
  269. ly_add_target_files(
  270. TARGETS
  271. ${editorTestTargets}
  272. FILES
  273. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/Legacy/MissingAtlPlatformsNode.xml
  274. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/Legacy/MissingConfigGroupNameAttribute.xml
  275. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/Legacy/MissingPlatformNameAttributeOnePreload.xml
  276. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/Legacy/MissingPlatformNode.xml
  277. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/Legacy/MissingWwiseFileNode.xml
  278. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/Legacy/MultiplePreloadsMultipleBanks.xml
  279. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/Legacy/MultiplePreloadsOneBank.xml
  280. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/Legacy/NoConfigGroups.xml
  281. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/Legacy/OnePreloadMultipleBanks.xml
  282. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/Legacy/OnePreloadOneBank.xml
  283. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/Legacy/WrongConfigGroup.xml
  284. OUTPUT_SUBDIRECTORY
  285. Test.Assets/Gems/AudioEngineWwise/AudioControls/Legacy
  286. )
  287. ly_add_target_files(
  288. TARGETS
  289. ${editorTestTargets}
  290. FILES
  291. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/Sounds/wwise/test_bank1.bankdeps
  292. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/Sounds/wwise/test_bank2.bankdeps
  293. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/Sounds/wwise/test_bank3.bankdeps
  294. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/Sounds/wwise/test_bank4.bankdeps
  295. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/Sounds/wwise/test_bank5.bankdeps
  296. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/Sounds/wwise/test_bank6.bankdeps
  297. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/Sounds/wwise/test_bank7.bankdeps
  298. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/Sounds/wwise/test_bank8.bankdeps
  299. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/Sounds/wwise/test_bank9.bankdeps
  300. OUTPUT_SUBDIRECTORY
  301. Test.Assets/Gems/AudioEngineWwise/sounds/wwise
  302. )
  303. endif() # PAL_TRAIT_BUILD_TESTS_SUPPORTED
  304. endif() # PAL_TRAIT_BUILD_HOST_TOOLS