CMakeLists.txt 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  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. ${additional_dependencies}
  43. RUNTIME_DEPENDENCIES
  44. AZ::AssetBuilder
  45. )
  46. # Aggregates all combined AssetBuilders into a single LY_ASSET_BUILDERS #define
  47. get_property(asset_builders GLOBAL PROPERTY LY_ASSET_BUILDERS)
  48. string (REPLACE ";" "," asset_builders "${asset_builders}")
  49. ly_add_source_properties(
  50. SOURCES native/utilities/ApplicationManager.cpp
  51. PROPERTY COMPILE_DEFINITIONS
  52. VALUES LY_ASSET_BUILDERS="${asset_builders}"
  53. )
  54. ly_add_target(
  55. NAME AssetProcessor APPLICATION
  56. NAMESPACE AZ
  57. AUTOMOC
  58. AUTOUIC
  59. AUTORCC
  60. FILES_CMAKE
  61. assetprocessor_gui_files.cmake
  62. Platform/${PAL_PLATFORM_NAME}/assetprocessor_gui_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
  63. PLATFORM_INCLUDE_FILES
  64. Platform/${PAL_PLATFORM_NAME}/assetprocessor_${PAL_PLATFORM_NAME_LOWERCASE}.cmake
  65. INCLUDE_DIRECTORIES
  66. PUBLIC
  67. .
  68. PRIVATE
  69. native
  70. BUILD_DEPENDENCIES
  71. PRIVATE
  72. AZ::AssetProcessor.Static
  73. )
  74. # Adds the AssetProcessor target as a C preprocessor define so that it can be used as a Settings Registry
  75. # specialization in order to look up the generated .setreg which contains the dependencies
  76. # specified for the target.
  77. if(TARGET AssetProcessor)
  78. ly_set_gem_variant_to_load(TARGETS AssetProcessor VARIANTS Builders)
  79. set_source_files_properties(
  80. native/AssetProcessorBuildTarget.cpp
  81. PROPERTIES
  82. COMPILE_DEFINITIONS
  83. LY_CMAKE_TARGET="AssetProcessor"
  84. )
  85. else()
  86. message(FATAL_ERROR "Cannot set LY_CMAKE_TARGET define to AssetProcessor as the target doesn't exist anymore."
  87. " Perhaps it has been renamed")
  88. endif()
  89. ly_add_target(
  90. NAME AssetProcessorBatch.Static STATIC
  91. NAMESPACE AZ
  92. AUTOMOC
  93. FILES_CMAKE
  94. assetprocessor_static_batch_files.cmake
  95. INCLUDE_DIRECTORIES
  96. PUBLIC
  97. .
  98. PRIVATE
  99. native
  100. BUILD_DEPENDENCIES
  101. PUBLIC
  102. AZ::AssetProcessor.Static
  103. )
  104. ly_add_target(
  105. NAME AssetProcessorBatch EXECUTABLE
  106. NAMESPACE AZ
  107. AUTOMOC
  108. FILES_CMAKE
  109. assetprocessor_batch_files.cmake
  110. INCLUDE_DIRECTORIES
  111. PRIVATE
  112. .
  113. native
  114. BUILD_DEPENDENCIES
  115. PRIVATE
  116. AZ::AssetProcessorBatch.Static
  117. )
  118. if(LY_DEFAULT_PROJECT_PATH)
  119. set_property(TARGET AssetProcessor AssetProcessorBatch APPEND PROPERTY VS_DEBUGGER_COMMAND_ARGUMENTS "--project-path=\"${LY_DEFAULT_PROJECT_PATH}\"")
  120. endif()
  121. # Adds the AssetProcessorBatch target as a C preprocessor define so that it can be used as a Settings Registry
  122. # specialization in order to look up the generated .setreg which contains the dependencies
  123. # specified for the target.
  124. if(TARGET AssetProcessorBatch)
  125. ly_set_gem_variant_to_load(TARGETS AssetProcessorBatch VARIANTS Builders)
  126. set_source_files_properties(
  127. native/AssetProcessorBatchBuildTarget.cpp
  128. PROPERTIES
  129. COMPILE_DEFINITIONS
  130. LY_CMAKE_TARGET="AssetProcessorBatch"
  131. )
  132. else()
  133. message(FATAL_ERROR "Cannot set LY_CMAKE_TARGET define to AssetProcessorBatch as the target doesn't exist anymore."
  134. " Perhaps it has been renamed")
  135. endif()
  136. ################################################################################
  137. # Tests
  138. ################################################################################
  139. if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
  140. ly_add_target(
  141. NAME AssetProcessor.Tests EXECUTABLE
  142. NAMESPACE AZ
  143. AUTOMOC
  144. AUTORCC
  145. FILES_CMAKE
  146. assetprocessor_test_files.cmake
  147. INCLUDE_DIRECTORIES
  148. PRIVATE
  149. native
  150. .
  151. BUILD_DEPENDENCIES
  152. PRIVATE
  153. AZ::AzTest
  154. AZ::AssetProcessorBatch.Static
  155. AZ::AzToolsFrameworkTestCommon
  156. )
  157. ly_add_source_properties(
  158. SOURCES native/tests/assetBuilderSDK/assetBuilderSDKTest.cpp
  159. PROPERTY COMPILE_DEFINITIONS
  160. VALUES ${LY_PAL_TOOLS_DEFINES}
  161. )
  162. ly_add_source_properties(
  163. SOURCES native/unittests/AssetProcessorManagerUnitTests.cpp
  164. PROPERTY COMPILE_DEFINITIONS
  165. VALUES LY_CMAKE_BINARY_DIR="${CMAKE_BINARY_DIR}"
  166. )
  167. ly_add_target_files(
  168. TARGETS
  169. AssetProcessor.Tests
  170. FILES
  171. ${CMAKE_CURRENT_SOURCE_DIR}/testdata/config_broken_badplatform/AssetProcessorPlatformConfig.setreg
  172. OUTPUT_SUBDIRECTORY
  173. testdata/config_broken_badplatform
  174. )
  175. ly_add_target_files(
  176. TARGETS
  177. AssetProcessor.Tests
  178. FILES
  179. ${CMAKE_CURRENT_SOURCE_DIR}/testdata/config_broken_noscans/AssetProcessorPlatformConfig.setreg
  180. OUTPUT_SUBDIRECTORY
  181. testdata/config_broken_noscans
  182. )
  183. ly_add_target_files(
  184. TARGETS
  185. AssetProcessor.Tests
  186. FILES
  187. ${CMAKE_CURRENT_SOURCE_DIR}/testdata/config_broken_recognizers/AssetProcessorPlatformConfig.setreg
  188. OUTPUT_SUBDIRECTORY
  189. testdata/config_broken_recognizers
  190. )
  191. ly_add_target_files(
  192. TARGETS
  193. AssetProcessor.Tests
  194. FILES
  195. ${CMAKE_CURRENT_SOURCE_DIR}/testdata/config_broken_noplatform/AssetProcessorPlatformConfig.setreg
  196. OUTPUT_SUBDIRECTORY
  197. testdata/config_broken_noplatform
  198. )
  199. ly_add_target_files(
  200. TARGETS
  201. AssetProcessor.Tests
  202. FILES
  203. ${CMAKE_CURRENT_SOURCE_DIR}/testdata/config_regular/AssetProcessorPlatformConfig.setreg
  204. OUTPUT_SUBDIRECTORY
  205. testdata/config_regular
  206. )
  207. ly_add_target_files(
  208. TARGETS
  209. AssetProcessor.Tests
  210. FILES
  211. ${CMAKE_CURRENT_SOURCE_DIR}/testdata/config_regular_platform_scanfolder/AssetProcessorPlatformConfig.setreg
  212. OUTPUT_SUBDIRECTORY
  213. testdata/config_regular_platform_scanfolder
  214. )
  215. ly_add_target_files(
  216. TARGETS
  217. AssetProcessor.Tests
  218. FILES
  219. ${CMAKE_CURRENT_SOURCE_DIR}/testdata/EmptyDummyProject/AssetProcessorGamePlatformConfig.setreg
  220. OUTPUT_SUBDIRECTORY
  221. testdata/EmptyDummyProject
  222. )
  223. ly_add_target_files(
  224. TARGETS
  225. AssetProcessor.Tests
  226. FILES
  227. ${CMAKE_CURRENT_SOURCE_DIR}/testdata/DummyProject/AssetProcessorGamePlatformConfig.setreg
  228. OUTPUT_SUBDIRECTORY
  229. testdata/DummyProject
  230. )
  231. ly_add_target_files(
  232. TARGETS
  233. AssetProcessor.Tests
  234. FILES
  235. ${CMAKE_CURRENT_SOURCE_DIR}/testdata/config_metadata/AssetProcessorPlatformConfig.setreg
  236. OUTPUT_SUBDIRECTORY
  237. testdata/config_metadata
  238. )
  239. # Have the AssetProcessorTest use the LY_CMAKE_TARGET define of AssetProcessorBatch for the purpose
  240. # of looking up the generated cmake build dependencies settings registry .setreg file
  241. # It is tied to the UnitTestRunner.cpp file
  242. if(TARGET AssetProcessorBatch)
  243. set_source_files_properties(
  244. native/unittests/UnitTestRunner.cpp
  245. PROPERTIES
  246. COMPILE_DEFINITIONS
  247. LY_CMAKE_TARGET="AssetProcessorBatch"
  248. )
  249. else()
  250. message(FATAL_ERROR "Cannot set LY_CMAKE_TARGET define to AssetProcessorBatch as the target doesn't exist anymore."
  251. " Perhaps it has been renamed")
  252. endif()
  253. ly_add_googletest(
  254. NAME AZ::AssetProcessor.Tests
  255. TEST_COMMAND $<TARGET_FILE:AZ::AssetProcessor.Tests> --unittest --gtest_filter=-*.SUITE_sandbox*
  256. )
  257. endif()