3
0

CMakeLists.txt 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  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. set(AUDIOSYSTEM_COMPILEDEFINITIONS
  9. $<IF:$<CONFIG:Release>,AUDIO_RELEASE,ENABLE_AUDIO_LOGGING>
  10. )
  11. o3de_pal_dir(pal_dir ${CMAKE_CURRENT_LIST_DIR}/Platform/${PAL_PLATFORM_NAME} "${gem_restricted_path}" "${gem_path}" "${gem_parent_relative_path}")
  12. ################################################################################
  13. # Client Targets
  14. ################################################################################
  15. ly_add_target(
  16. NAME ${gem_name}.API INTERFACE
  17. NAMESPACE Gem
  18. FILES_CMAKE
  19. audiosystem_api_files.cmake
  20. INCLUDE_DIRECTORIES
  21. INTERFACE
  22. Include/Engine
  23. BUILD_DEPENDENCIES
  24. INTERFACE
  25. AZ::AzCore
  26. )
  27. ly_add_target(
  28. NAME ${gem_name}.Private.Object STATIC
  29. NAMESPACE Gem
  30. FILES_CMAKE
  31. audiosystem_files.cmake
  32. ${pal_dir}/platform_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
  33. TARGET_PROPERTIES
  34. O3DE_PRIVATE_TARGET TRUE
  35. INCLUDE_DIRECTORIES
  36. PRIVATE
  37. Include/Engine
  38. Source/Engine
  39. ${pal_dir}
  40. PLATFORM_INCLUDE_FILES
  41. ${pal_dir}/platform_${PAL_PLATFORM_NAME_LOWERCASE}.cmake
  42. COMPILE_DEFINITIONS
  43. PUBLIC
  44. ${AUDIOSYSTEM_COMPILEDEFINITIONS}
  45. BUILD_DEPENDENCIES
  46. PUBLIC
  47. AZ::AzCore
  48. AZ::AzFramework
  49. Gem::${gem_name}.API
  50. Gem::Atom_RPI.Public
  51. Legacy::CryCommon # Temporary, needs to be removed
  52. )
  53. ly_add_target(
  54. NAME ${gem_name} ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
  55. NAMESPACE Gem
  56. FILES_CMAKE
  57. audiosystem_shared_files.cmake
  58. INCLUDE_DIRECTORIES
  59. PRIVATE
  60. Source/Engine
  61. ${pal_dir}
  62. COMPILE_DEFINITIONS
  63. PUBLIC
  64. ${AUDIOSYSTEM_COMPILEDEFINITIONS}
  65. BUILD_DEPENDENCIES
  66. PUBLIC
  67. Gem::${gem_name}.API
  68. PRIVATE
  69. Gem::${gem_name}.Private.Object
  70. )
  71. # AudioSystem aliases for Clients and Unified launchers (no Servers)
  72. ly_create_alias(NAME ${gem_name}.Clients NAMESPACE Gem TARGETS Gem::${gem_name})
  73. ly_create_alias(NAME ${gem_name}.Clients.API NAMESPACE Gem TARGETS Gem::${gem_name}.API)
  74. ly_create_alias(NAME ${gem_name}.Unified NAMESPACE Gem TARGETS Gem::${gem_name})
  75. ly_create_alias(NAME ${gem_name}.Unified.API NAMESPACE Gem TARGETS Gem::${gem_name}.API)
  76. ################################################################################
  77. # Tests
  78. ################################################################################
  79. if (PAL_TRAIT_BUILD_TESTS_SUPPORTED)
  80. set(common_dir ${CMAKE_CURRENT_LIST_DIR}/Platform/Common)
  81. ly_add_target(
  82. NAME ${gem_name}.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
  83. NAMESPACE Gem
  84. FILES_CMAKE
  85. audiosystem_tests_files.cmake
  86. audiosystem_shared_files.cmake
  87. INCLUDE_DIRECTORIES
  88. PRIVATE
  89. Tests
  90. Source/Engine
  91. BUILD_DEPENDENCIES
  92. PUBLIC
  93. Gem::${gem_name}.API
  94. PRIVATE
  95. AZ::AzTest
  96. Gem::${gem_name}.Private.Object
  97. Legacy::CryCommon # Temporary, needs to be removed
  98. )
  99. ly_add_googletest(
  100. NAME Gem::${gem_name}.Tests
  101. )
  102. list(APPEND testTargets ${gem_name}.Tests)
  103. ly_add_target_files(
  104. TARGETS
  105. ${testTargets}
  106. FILES
  107. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/ATLData/Legacy/MultipleMultiple/ATLTestControls.xml
  108. OUTPUT_SUBDIRECTORY
  109. Test.Assets/Gems/AudioSystem/ATLData/Legacy/MultipleMultiple
  110. )
  111. ly_add_target_files(
  112. TARGETS
  113. ${testTargets}
  114. FILES
  115. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/ATLData/Legacy/MultipleOne/ATLTestControls.xml
  116. OUTPUT_SUBDIRECTORY
  117. Test.Assets/Gems/AudioSystem/ATLData/Legacy/MultipleOne
  118. )
  119. ly_add_target_files(
  120. TARGETS
  121. ${testTargets}
  122. FILES
  123. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/ATLData/Legacy/OneMultiple/ATLTestControls.xml
  124. OUTPUT_SUBDIRECTORY
  125. Test.Assets/Gems/AudioSystem/ATLData/Legacy/OneMultiple
  126. )
  127. ly_add_target_files(
  128. TARGETS
  129. ${testTargets}
  130. FILES
  131. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/ATLData/Legacy/OneOne/ATLTestControls.xml
  132. OUTPUT_SUBDIRECTORY
  133. Test.Assets/Gems/AudioSystem/ATLData/Legacy/OneOne
  134. )
  135. ly_add_target_files(
  136. TARGETS
  137. ${testTargets}
  138. FILES
  139. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/ATLData/MultipleMultiple/ATLTestControls.xml
  140. OUTPUT_SUBDIRECTORY
  141. Test.Assets/Gems/AudioSystem/ATLData/MultipleMultiple
  142. )
  143. ly_add_target_files(
  144. TARGETS
  145. ${testTargets}
  146. FILES
  147. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/ATLData/MultipleOne/ATLTestControls.xml
  148. OUTPUT_SUBDIRECTORY
  149. Test.Assets/Gems/AudioSystem/ATLData/MultipleOne
  150. )
  151. ly_add_target_files(
  152. TARGETS
  153. ${testTargets}
  154. FILES
  155. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/ATLData/OneMultiple/ATLTestControls.xml
  156. OUTPUT_SUBDIRECTORY
  157. Test.Assets/Gems/AudioSystem/ATLData/OneMultiple
  158. )
  159. ly_add_target_files(
  160. TARGETS
  161. ${testTargets}
  162. FILES
  163. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/ATLData/OneOne/ATLTestControls.xml
  164. OUTPUT_SUBDIRECTORY
  165. Test.Assets/Gems/AudioSystem/ATLData/OneOne
  166. )
  167. endif() # PAL_TRAIT_BUILD_TESTS_SUPPORTED
  168. ################################################################################
  169. # Editor
  170. ################################################################################
  171. if (PAL_TRAIT_BUILD_HOST_TOOLS)
  172. ly_add_target(
  173. NAME ${gem_name}.Editor.API INTERFACE
  174. NAMESPACE Gem
  175. FILES_CMAKE
  176. audiosystem_editor_api_files.cmake
  177. INCLUDE_DIRECTORIES
  178. INTERFACE
  179. Include/Editor
  180. BUILD_DEPENDENCIES
  181. INTERFACE
  182. AZ::AzCore
  183. )
  184. ly_add_target(
  185. NAME ${gem_name}.Editor.Private.Object STATIC
  186. NAMESPACE Gem
  187. AUTOMOC
  188. AUTOUIC
  189. AUTORCC
  190. FILES_CMAKE
  191. audiosystem_editor_files.cmake
  192. TARGET_PROPERTIES
  193. O3DE_PRIVATE_TARGET TRUE
  194. INCLUDE_DIRECTORIES
  195. PRIVATE
  196. . # <-- This is needed for Automoc, Autouic, Autorcc
  197. Source/Engine
  198. Source/Editor
  199. ${pal_dir}
  200. COMPILE_DEFINITIONS
  201. PUBLIC
  202. ${AUDIOSYSTEM_COMPILEDEFINITIONS}
  203. BUILD_DEPENDENCIES
  204. PUBLIC
  205. AZ::AzCore
  206. AZ::AzToolsFramework
  207. Legacy::EditorCore
  208. Legacy::EditorCommon
  209. Gem::${gem_name}.API
  210. Gem::${gem_name}.Editor.API
  211. Legacy::CryCommon # Temporary, needs to be removed
  212. PRIVATE
  213. Gem::${gem_name}.Private.Object
  214. 3rdParty::Qt::Core
  215. 3rdParty::Qt::Widgets
  216. 3rdParty::Qt::Gui
  217. )
  218. ly_add_target(
  219. NAME ${gem_name}.Editor GEM_MODULE
  220. NAMESPACE Gem
  221. FILES_CMAKE
  222. audiosystem_editor_shared_files.cmake
  223. INCLUDE_DIRECTORIES
  224. PRIVATE
  225. Source/Editor
  226. Source/Engine
  227. COMPILE_DEFINITIONS
  228. PRIVATE
  229. AUDIO_SYSTEM_EDITOR
  230. BUILD_DEPENDENCIES
  231. PUBLIC
  232. Gem::${gem_name}.API
  233. Gem::${gem_name}.Editor.API
  234. PRIVATE
  235. 3rdParty::Qt::Core
  236. Gem::Atom_RPI.Public
  237. Gem::${gem_name}.Editor.Private.Object
  238. )
  239. # use the above "Editor" target in tools and builders:
  240. ly_create_alias(NAME ${gem_name}.Tools NAMESPACE Gem TARGETS Gem::${gem_name}.Editor)
  241. ly_create_alias(NAME ${gem_name}.Builders NAMESPACE Gem TARGETS Gem::${gem_name}.Editor)
  242. if (PAL_TRAIT_BUILD_TESTS_SUPPORTED)
  243. ly_add_target(
  244. NAME ${gem_name}.Editor.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
  245. NAMESPACE Gem
  246. FILES_CMAKE
  247. audiosystem_editor_tests_files.cmake
  248. audiosystem_editor_shared_files.cmake
  249. INCLUDE_DIRECTORIES
  250. PRIVATE
  251. Tests
  252. Source/Editor
  253. Source/Engine
  254. BUILD_DEPENDENCIES
  255. PUBLIC
  256. Gem::${gem_name}.API
  257. Gem::${gem_name}.Editor.API
  258. PRIVATE
  259. AZ::AzTest
  260. 3rdParty::Qt::Core
  261. Gem::Atom_RPI.Public
  262. Gem::${gem_name}.Editor.Private.Object
  263. )
  264. ly_add_googletest(
  265. NAME Gem::AudioSystem.Editor.Tests
  266. LABELS REQUIRES_tiaf
  267. )
  268. endif() # PAL_TRAIT_BUILD_TESTS_SUPPORTED
  269. endif() # PAL_TRAIT_BUILD_HOST_TOOLS