CMakeLists.txt 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  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. if(NOT PAL_TRAIT_BUILD_HOST_TOOLS)
  9. return()
  10. endif()
  11. # Builders need to be defined first because we collect the builders and pass them
  12. # to AssetBuilder and AssetProcessor so it loads them.
  13. add_subdirectory(AssetBuilderSDK)
  14. add_subdirectory(AssetBuilder)
  15. ly_add_target(
  16. NAME AssetProcessor.Static STATIC
  17. NAMESPACE AZ
  18. AUTOMOC
  19. AUTORCC
  20. FILES_CMAKE
  21. assetprocessor_static_files.cmake
  22. Platform/${PAL_PLATFORM_NAME}/assetprocessor_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
  23. INCLUDE_DIRECTORIES
  24. PUBLIC
  25. .
  26. Platform/${PAL_PLATFORM_NAME}
  27. PRIVATE
  28. native
  29. BUILD_DEPENDENCIES
  30. PUBLIC
  31. 3rdParty::Qt::Core
  32. 3rdParty::Qt::Gui
  33. 3rdParty::Qt::Network
  34. 3rdParty::RapidJSON
  35. 3rdParty::SQLite
  36. 3rdParty::xxhash
  37. AZ::AzCore
  38. AZ::AzFramework
  39. AZ::AzQtComponents
  40. AZ::AzToolsFramework
  41. AZ::AssetBuilderSDK
  42. AZ::AssetBuilder.Static
  43. ${additional_dependencies}
  44. )
  45. # Aggregates all combined AssetBuilders into a single LY_ASSET_BUILDERS #define
  46. get_property(asset_builders GLOBAL PROPERTY LY_ASSET_BUILDERS)
  47. string (REPLACE ";" "," asset_builders "${asset_builders}")
  48. ly_add_source_properties(
  49. SOURCES native/utilities/ApplicationManager.cpp
  50. PROPERTY COMPILE_DEFINITIONS
  51. VALUES LY_ASSET_BUILDERS="${asset_builders}"
  52. )
  53. ly_add_target(
  54. NAME AssetProcessor APPLICATION
  55. NAMESPACE AZ
  56. AUTOMOC
  57. AUTOUIC
  58. AUTORCC
  59. FILES_CMAKE
  60. assetprocessor_gui_files.cmake
  61. Platform/${PAL_PLATFORM_NAME}/assetprocessor_gui_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
  62. PLATFORM_INCLUDE_FILES
  63. Platform/${PAL_PLATFORM_NAME}/assetprocessor_${PAL_PLATFORM_NAME_LOWERCASE}.cmake
  64. INCLUDE_DIRECTORIES
  65. PUBLIC
  66. .
  67. PRIVATE
  68. native
  69. BUILD_DEPENDENCIES
  70. PRIVATE
  71. AZ::AssetProcessor.Static
  72. RUNTIME_DEPENDENCIES
  73. AZ::AssetBuilder
  74. )
  75. if(PAL_TRAIT_BUILD_EXTERNAL_CRASH_HANDLER_SUPPORTED)
  76. ly_target_link_libraries(AssetProcessor PRIVATE AZ::ToolsCrashHandler)
  77. endif()
  78. # Adds the AssetProcessor target as a C preprocessor define so that it can be used as a Settings Registry
  79. # specialization in order to look up the generated .setreg which contains the dependencies
  80. # specified for the target.
  81. if(TARGET AssetProcessor)
  82. ly_set_gem_variant_to_load(TARGETS AssetProcessor VARIANTS Builders)
  83. set_source_files_properties(
  84. native/AssetProcessorBuildTarget.cpp
  85. PROPERTIES
  86. COMPILE_DEFINITIONS
  87. LY_CMAKE_TARGET="AssetProcessor"
  88. )
  89. else()
  90. message(FATAL_ERROR "Cannot set LY_CMAKE_TARGET define to AssetProcessor as the target doesn't exist anymore."
  91. " Perhaps it has been renamed")
  92. endif()
  93. ly_add_target(
  94. NAME AssetProcessorBatch.Static STATIC
  95. NAMESPACE AZ
  96. AUTOMOC
  97. FILES_CMAKE
  98. assetprocessor_static_batch_files.cmake
  99. INCLUDE_DIRECTORIES
  100. PUBLIC
  101. .
  102. PRIVATE
  103. native
  104. BUILD_DEPENDENCIES
  105. PUBLIC
  106. AZ::AssetProcessor.Static
  107. )
  108. ly_add_target(
  109. NAME AssetProcessorBatch EXECUTABLE
  110. NAMESPACE AZ
  111. AUTOMOC
  112. FILES_CMAKE
  113. assetprocessor_batch_files.cmake
  114. INCLUDE_DIRECTORIES
  115. PRIVATE
  116. .
  117. native
  118. BUILD_DEPENDENCIES
  119. PRIVATE
  120. AZ::AssetProcessorBatch.Static
  121. RUNTIME_DEPENDENCIES
  122. AZ::AssetBuilder
  123. )
  124. if(LY_DEFAULT_PROJECT_PATH)
  125. set_property(TARGET AssetProcessor AssetProcessorBatch APPEND PROPERTY VS_DEBUGGER_COMMAND_ARGUMENTS "--project-path=\"${LY_DEFAULT_PROJECT_PATH}\"")
  126. endif()
  127. # Adds the AssetProcessorBatch target as a C preprocessor define so that it can be used as a Settings Registry
  128. # specialization in order to look up the generated .setreg which contains the dependencies
  129. # specified for the target.
  130. if(TARGET AssetProcessorBatch)
  131. ly_set_gem_variant_to_load(TARGETS AssetProcessorBatch VARIANTS Builders)
  132. set_source_files_properties(
  133. native/AssetProcessorBatchBuildTarget.cpp
  134. PROPERTIES
  135. COMPILE_DEFINITIONS
  136. LY_CMAKE_TARGET="AssetProcessorBatch"
  137. )
  138. else()
  139. message(FATAL_ERROR "Cannot set LY_CMAKE_TARGET define to AssetProcessorBatch as the target doesn't exist anymore."
  140. " Perhaps it has been renamed")
  141. endif()
  142. ################################################################################
  143. # Tests
  144. ################################################################################
  145. if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
  146. ly_add_target(
  147. NAME AssetProcessor.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
  148. NAMESPACE AZ
  149. AUTOMOC
  150. AUTORCC
  151. FILES_CMAKE
  152. assetprocessor_test_files.cmake
  153. INCLUDE_DIRECTORIES
  154. PRIVATE
  155. native
  156. .
  157. BUILD_DEPENDENCIES
  158. PRIVATE
  159. AZ::AzTest
  160. AZ::AssetProcessorBatch.Static
  161. AZ::AzToolsFrameworkTestCommon
  162. )
  163. ly_add_source_properties(
  164. SOURCES native/tests/assetBuilderSDK/assetBuilderSDKTest.cpp
  165. PROPERTY COMPILE_DEFINITIONS
  166. VALUES ${LY_PAL_TOOLS_DEFINES}
  167. )
  168. ly_add_source_properties(
  169. SOURCES native/unittests/AssetProcessorManagerUnitTests.cpp
  170. PROPERTY COMPILE_DEFINITIONS
  171. VALUES LY_CMAKE_BINARY_DIR="${CMAKE_BINARY_DIR}"
  172. )
  173. ly_add_target_files(
  174. TARGETS
  175. AssetProcessor.Tests
  176. FILES
  177. ${CMAKE_CURRENT_SOURCE_DIR}/testdata/config_broken_badplatform/AssetProcessorPlatformConfig.setreg
  178. OUTPUT_SUBDIRECTORY
  179. testdata/config_broken_badplatform
  180. )
  181. ly_add_target_files(
  182. TARGETS
  183. AssetProcessor.Tests
  184. FILES
  185. ${CMAKE_CURRENT_SOURCE_DIR}/testdata/config_broken_noscans/AssetProcessorPlatformConfig.setreg
  186. OUTPUT_SUBDIRECTORY
  187. testdata/config_broken_noscans
  188. )
  189. ly_add_target_files(
  190. TARGETS
  191. AssetProcessor.Tests
  192. FILES
  193. ${CMAKE_CURRENT_SOURCE_DIR}/testdata/config_broken_recognizers/AssetProcessorPlatformConfig.setreg
  194. OUTPUT_SUBDIRECTORY
  195. testdata/config_broken_recognizers
  196. )
  197. ly_add_target_files(
  198. TARGETS
  199. AssetProcessor.Tests
  200. FILES
  201. ${CMAKE_CURRENT_SOURCE_DIR}/testdata/config_broken_noplatform/AssetProcessorPlatformConfig.setreg
  202. OUTPUT_SUBDIRECTORY
  203. testdata/config_broken_noplatform
  204. )
  205. ly_add_target_files(
  206. TARGETS
  207. AssetProcessor.Tests
  208. FILES
  209. ${CMAKE_CURRENT_SOURCE_DIR}/testdata/config_regular/AssetProcessorPlatformConfig.setreg
  210. OUTPUT_SUBDIRECTORY
  211. testdata/config_regular
  212. )
  213. ly_add_target_files(
  214. TARGETS
  215. AssetProcessor.Tests
  216. FILES
  217. ${CMAKE_CURRENT_SOURCE_DIR}/testdata/config_regular_platform_scanfolder/AssetProcessorPlatformConfig.setreg
  218. OUTPUT_SUBDIRECTORY
  219. testdata/config_regular_platform_scanfolder
  220. )
  221. ly_add_target_files(
  222. TARGETS
  223. AssetProcessor.Tests
  224. FILES
  225. ${CMAKE_CURRENT_SOURCE_DIR}/testdata/EmptyDummyProject/AssetProcessorGamePlatformConfig.setreg
  226. OUTPUT_SUBDIRECTORY
  227. testdata/EmptyDummyProject
  228. )
  229. ly_add_target_files(
  230. TARGETS
  231. AssetProcessor.Tests
  232. FILES
  233. ${CMAKE_CURRENT_SOURCE_DIR}/testdata/DummyProject/AssetProcessorGamePlatformConfig.setreg
  234. OUTPUT_SUBDIRECTORY
  235. testdata/DummyProject
  236. )
  237. ly_add_target_files(
  238. TARGETS
  239. AssetProcessor.Tests
  240. FILES
  241. ${CMAKE_CURRENT_SOURCE_DIR}/testdata/config_metadata/AssetProcessorPlatformConfig.setreg
  242. OUTPUT_SUBDIRECTORY
  243. testdata/config_metadata
  244. )
  245. # Have the AssetProcessorTest use the LY_CMAKE_TARGET define of AssetProcessorBatch for the purpose
  246. # of looking up the generated cmake build dependencies settings registry .setreg file
  247. # It is tied to the UnitTestUtils.cpp file
  248. if(TARGET AssetProcessorBatch)
  249. set_source_files_properties(
  250. native/unittests/UnitTestUtils.cpp
  251. PROPERTIES
  252. COMPILE_DEFINITIONS
  253. LY_CMAKE_TARGET="AssetProcessorBatch"
  254. )
  255. else()
  256. message(FATAL_ERROR "Cannot set LY_CMAKE_TARGET define to AssetProcessorBatch as the target doesn't exist anymore."
  257. " Perhaps it has been renamed")
  258. endif()
  259. # there are some tests in the main suite, and some in periodic.
  260. ly_add_googletest(
  261. NAME AZ::AssetProcessor.Tests
  262. LABELS REQUIRES_tiaf
  263. )
  264. ly_add_googletest(NAME AZ::AssetProcessor.Tests.Periodic
  265. TARGET AZ::AssetProcessor.Tests
  266. TEST_SUITE periodic)
  267. # Sandbox the tests that fail intermittently
  268. ly_add_googletest(NAME AZ::AssetProcessor.Tests.Sandbox
  269. TARGET AZ::AssetProcessor.Tests
  270. TEST_SUITE sandbox)
  271. ly_add_googlebenchmark(
  272. NAME AZ::AssetProcessor.Benchmarks
  273. TARGET AZ::AssetProcessor.Tests
  274. )
  275. endif()