CMakeLists.txt 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  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. include(${pal_dir}/PAL_${PAL_PLATFORM_NAME_LOWERCASE}.cmake)
  10. find_package(Onnx REQUIRED)
  11. if(NOT PAL_TRAIT_ONNX_SUPPORTED OR NOT Onnx_FOUND)
  12. # Don't create any Gem targets and aliases. Nothing should depend on this
  13. # Gem directly, because if it doesn't define targets it will cause an error.
  14. return()
  15. endif()
  16. # The ONNX.API target declares the common interface that users of this gem should depend on in their targets
  17. ly_add_target(
  18. NAME ONNX.API INTERFACE
  19. NAMESPACE Gem
  20. FILES_CMAKE
  21. onnx_api_files.cmake
  22. ${pal_dir}/onnx_api_files.cmake
  23. INCLUDE_DIRECTORIES
  24. INTERFACE
  25. Include
  26. Source
  27. ${Onnx_INCLUDE_DIR}
  28. BUILD_DEPENDENCIES
  29. INTERFACE
  30. AZ::AzCore
  31. AZ::AzFramework
  32. AZ::AzToolsFramework
  33. Gem::ImguiAtom.Static
  34. Gem::ImGui.Static
  35. Gem::ImGui.ImGuiLYUtils
  36. ${Onnx_LIB}
  37. )
  38. # The ONNX.Private.Object target is an internal target
  39. # It should not be used outside of this Gems CMakeLists.txt
  40. ly_add_target(
  41. NAME ONNX.Private.Object STATIC
  42. NAMESPACE Gem
  43. FILES_CMAKE
  44. onnx_private_files.cmake
  45. ${pal_dir}/onnx_private_files.cmake
  46. COMPILE_DEFINITIONS
  47. PUBLIC ENABLE_CUDA=true
  48. TARGET_PROPERTIES
  49. O3DE_PRIVATE_TARGET TRUE
  50. INCLUDE_DIRECTORIES
  51. PUBLIC
  52. Include
  53. Source
  54. ${Onnx_INCLUDE_DIR}
  55. BUILD_DEPENDENCIES
  56. PUBLIC
  57. AZ::AzCore
  58. AZ::AzFramework
  59. AZ::AzToolsFramework
  60. ${Onnx_LIB}
  61. Gem::ImguiAtom.Static
  62. Gem::ImGui.Static
  63. Gem::ImGui.ImGuiLYUtils
  64. )
  65. # Here add ONNX target, it depends on the Private Object library and Public API interface
  66. ly_add_target(
  67. NAME ONNX ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
  68. NAMESPACE Gem
  69. FILES_CMAKE
  70. onnx_shared_files.cmake
  71. ${pal_dir}/onnx_shared_files.cmake
  72. INCLUDE_DIRECTORIES
  73. PUBLIC
  74. Include
  75. PRIVATE
  76. Source
  77. BUILD_DEPENDENCIES
  78. PUBLIC
  79. Gem::ONNX.API
  80. ${Onnx_LIB}
  81. PRIVATE
  82. Gem::ONNX.Private.Object
  83. INTERFACE
  84. Gem::ImguiAtom.Static
  85. Gem::ImGui.Static
  86. Gem::ImGui.ImGuiLYUtils
  87. )
  88. # By default, we will specify that the above target ONNX would be used by
  89. # Client and Server type targets when this gem is enabled. If you don't want it
  90. # active in Clients or Servers by default, delete one of both of the following lines:
  91. ly_create_alias(NAME ONNX.Clients NAMESPACE Gem TARGETS Gem::ONNX)
  92. ly_create_alias(NAME ONNX.Servers NAMESPACE Gem TARGETS Gem::ONNX)
  93. # For the Client and Server variants of ONNX Gem, an alias to the ONNX.API target will be made
  94. ly_create_alias(NAME ONNX.Clients.API NAMESPACE Gem TARGETS Gem::ONNX.API)
  95. ly_create_alias(NAME ONNX.Servers.API NAMESPACE Gem TARGETS Gem::ONNX.API)
  96. # If we are on a host platform, we want to add the host tools targets like the ONNX.Editor MODULE target
  97. if(PAL_TRAIT_BUILD_HOST_TOOLS)
  98. # The ONNX.Editor.API target can be used by other gems that want to interact with the ONNX.Editor module
  99. ly_add_target(
  100. NAME ONNX.Editor.API INTERFACE
  101. NAMESPACE Gem
  102. FILES_CMAKE
  103. onnx_editor_api_files.cmake
  104. ${pal_dir}/onnx_editor_api_files.cmake
  105. INCLUDE_DIRECTORIES
  106. INTERFACE
  107. Include
  108. BUILD_DEPENDENCIES
  109. INTERFACE
  110. AZ::AzToolsFramework
  111. Gem::ImguiAtom.Static
  112. Gem::ImGui.Static
  113. Gem::ImGui.ImGuiLYUtils
  114. )
  115. # The ONNX.Editor.Private.Object target is an internal target
  116. # which is only to be used by this gems CMakeLists.txt and any subdirectories
  117. # Other gems should not use this target
  118. ly_add_target(
  119. NAME ONNX.Editor.Private.Object STATIC
  120. NAMESPACE Gem
  121. FILES_CMAKE
  122. onnx_editor_private_files.cmake
  123. TARGET_PROPERTIES
  124. O3DE_PRIVATE_TARGET TRUE
  125. INCLUDE_DIRECTORIES
  126. PRIVATE
  127. Include
  128. Source
  129. BUILD_DEPENDENCIES
  130. PUBLIC
  131. AZ::AzToolsFramework
  132. $<TARGET_OBJECTS:Gem::ONNX.Private.Object>
  133. ${Onnx_LIB}
  134. Gem::ImGui.Static
  135. Gem::ImGui.ImGuiLYUtils
  136. INTERFACE
  137. Gem::ImguiAtom.Static
  138. )
  139. ly_add_target(
  140. NAME ONNX.Editor GEM_MODULE
  141. NAMESPACE Gem
  142. AUTOMOC
  143. FILES_CMAKE
  144. onnx_editor_shared_files.cmake
  145. INCLUDE_DIRECTORIES
  146. PRIVATE
  147. Source
  148. PUBLIC
  149. Include
  150. BUILD_DEPENDENCIES
  151. PUBLIC
  152. Gem::ONNX.Editor.API
  153. ${Onnx_LIB}
  154. PRIVATE
  155. Gem::ONNX.Editor.Private.Object
  156. INTERFACE
  157. Gem::ImguiAtom.Static
  158. Gem::ImGui.Static
  159. Gem::ImGui.ImGuiLYUtils
  160. )
  161. # By default, we will specify that the above target ONNX would be used by
  162. # Tool and Builder type targets when this gem is enabled. If you don't want it
  163. # active in Tools or Builders by default, delete one of both of the following lines:
  164. ly_create_alias(NAME ONNX.Tools NAMESPACE Gem TARGETS Gem::ONNX.Editor)
  165. ly_create_alias(NAME ONNX.Builders NAMESPACE Gem TARGETS Gem::ONNX.Editor)
  166. # For the Tools and Builders variants of ONNX Gem, an alias to the ONNX.Editor API target will be made
  167. ly_create_alias(NAME ONNX.Tools.API NAMESPACE Gem TARGETS Gem::ONNX.Editor.API)
  168. ly_create_alias(NAME ONNX.Builders.API NAMESPACE Gem TARGETS Gem::ONNX.Editor.API)
  169. endif()
  170. ################################################################################
  171. # Tests
  172. ################################################################################
  173. # See if globally, tests are supported
  174. if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
  175. # We globally support tests, see if we support tests on this platform for ONNX.Tests
  176. if(PAL_TRAIT_ONNX_TEST_SUPPORTED)
  177. # We support ONNX.Tests on this platform, add dependency on the Private Object target
  178. ly_add_target(
  179. NAME ONNX.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
  180. NAMESPACE Gem
  181. FILES_CMAKE
  182. onnx_private_files.cmake
  183. onnx_tests_files.cmake
  184. TARGET_PROPERTIES
  185. O3DE_PRIVATE_TARGET TRUE
  186. INCLUDE_DIRECTORIES
  187. PUBLIC
  188. Tests
  189. Source
  190. Source/Clients
  191. ${Onnx_INCLUDE_DIR}
  192. Include
  193. BUILD_DEPENDENCIES
  194. PRIVATE
  195. AZ::AzTest
  196. AZ::AzFramework
  197. AZ::AzToolsFrameworkTestCommon
  198. Gem::ONNX.Private.Object
  199. PUBLIC
  200. ${Onnx_LIB}
  201. Gem::ONNX.API
  202. )
  203. # Add ONNX.Tests to googletest
  204. ly_add_googletest(
  205. NAME Gem::ONNX.Tests
  206. )
  207. endif()
  208. # If we are a host platform we want to add tools test like editor tests here
  209. if(PAL_TRAIT_BUILD_HOST_TOOLS)
  210. # We are a host platform, see if Editor tests are supported on this platform
  211. if(PAL_TRAIT_ONNX_EDITOR_TEST_SUPPORTED)
  212. # We support ONNX.Editor.Tests on this platform, add ONNX.Editor.Tests target which depends on
  213. # private ONNX.Editor.Private.Object target
  214. ly_add_target(
  215. NAME ONNX.Editor.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
  216. NAMESPACE Gem
  217. FILES_CMAKE
  218. onnx_editor_tests_files.cmake
  219. INCLUDE_DIRECTORIES
  220. PRIVATE
  221. Tests
  222. Source
  223. BUILD_DEPENDENCIES
  224. PRIVATE
  225. AZ::AzTest
  226. Gem::ONNX.Private.Object
  227. PUBLIC
  228. ${Onnx_LIB}
  229. )
  230. # Add ONNX.Editor.Tests to googletest
  231. ly_add_googletest(
  232. NAME Gem::ONNX.Editor.Tests
  233. )
  234. endif()
  235. endif()
  236. endif()