CMakeLists.txt 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  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. add_subdirectory(NumericalMethods)
  9. o3de_pal_dir(pal_source_dir ${CMAKE_CURRENT_LIST_DIR}/Source/Platform/${PAL_PLATFORM_NAME} "${gem_restricted_path}" "${gem_path}" "${gem_parent_relative_path}")
  10. include(${pal_source_dir}/PAL_${PAL_PLATFORM_NAME_LOWERCASE}.cmake) # for PAL_TRAIT_PHYSX_SUPPORTED
  11. set(LY_PHYSX_ENABLE_RUNNING_BENCHMARKS OFF CACHE BOOL "Adds a target to allow running of the physx benchmarks.")
  12. if(PAL_TRAIT_PHYSX_SUPPORTED)
  13. set(physx_dependency 3rdParty::PhysX)
  14. set(physx_files physx_files.cmake)
  15. set(physx_shared_files physx_shared_files.cmake)
  16. set(physx_mock_files physx_mocks_files.cmake)
  17. set(physx_editor_files physx_editor_files.cmake)
  18. else()
  19. set(physx_files physx_unsupported_files.cmake)
  20. set(physx_shared_files physx_unsupported_shared_files.cmake)
  21. set(physx_editor_files physx_unsupported_files.cmake)
  22. endif()
  23. ly_add_target(
  24. NAME PhysX.Static STATIC
  25. NAMESPACE Gem
  26. FILES_CMAKE
  27. ${physx_files}
  28. COMPILE_DEFINITIONS
  29. PUBLIC
  30. PHYSX_ENABLE_MULTI_THREADING
  31. $<$<NOT:$<CONFIG:release>>:AZ_PHYSICS_DEBUG_ENABLED>
  32. INCLUDE_DIRECTORIES
  33. PUBLIC
  34. .
  35. Source
  36. ${pal_source_dir}
  37. Include
  38. BUILD_DEPENDENCIES
  39. PUBLIC
  40. ${physx_dependency}
  41. AZ::AzCore
  42. AZ::AzFramework
  43. Legacy::CryCommon
  44. PRIVATE
  45. Gem::LmbrCentral.API
  46. )
  47. ly_add_target(
  48. NAME PhysX ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
  49. NAMESPACE Gem
  50. OUTPUT_NAME PhysX.Gem
  51. FILES_CMAKE
  52. ${physx_shared_files}
  53. COMPILE_DEFINITIONS
  54. PUBLIC
  55. PHYSX_ENABLE_MULTI_THREADING
  56. INCLUDE_DIRECTORIES
  57. PRIVATE
  58. ${pal_source_dir}
  59. PUBLIC
  60. Include
  61. BUILD_DEPENDENCIES
  62. PRIVATE
  63. Gem::PhysX.Static
  64. Gem::LmbrCentral.API
  65. RUNTIME_DEPENDENCIES
  66. Gem::LmbrCentral
  67. )
  68. # use the PhysX module in clients and servers:
  69. ly_create_alias(NAME PhysX.Clients NAMESPACE Gem TARGETS Gem::PhysX)
  70. ly_create_alias(NAME PhysX.Servers NAMESPACE Gem TARGETS Gem::PhysX)
  71. ly_create_alias(NAME PhysX.Unified NAMESPACE Gem TARGETS Gem::PhysX)
  72. if(PAL_TRAIT_BUILD_HOST_TOOLS)
  73. ly_add_target(
  74. NAME PhysX.Editor.Static STATIC
  75. NAMESPACE Gem
  76. AUTOMOC
  77. AUTOUIC
  78. FILES_CMAKE
  79. ${physx_editor_files}
  80. PLATFORM_INCLUDE_FILES
  81. ${CMAKE_CURRENT_LIST_DIR}/Source/Platform/Common/${PAL_TRAIT_COMPILER_ID}/physx_editor_static_${PAL_TRAIT_COMPILER_ID_LOWERCASE}.cmake
  82. COMPILE_DEFINITIONS
  83. PUBLIC
  84. PHYSX_EDITOR
  85. ENABLE_NON_COMPILED_CGF
  86. INCLUDE_DIRECTORIES
  87. PRIVATE
  88. .
  89. Source
  90. ${pal_source_dir}
  91. PUBLIC
  92. Include
  93. BUILD_DEPENDENCIES
  94. PUBLIC
  95. ${physx_dependency}
  96. 3rdParty::poly2tri
  97. 3rdParty::v-hacd
  98. Legacy::Editor.Headers
  99. AZ::AzCore
  100. AZ::AzFramework
  101. AZ::AzToolsFramework
  102. AZ::AssetBuilderSDK
  103. AZ::SceneCore
  104. AZ::SceneData
  105. Legacy::CryCommon
  106. Gem::LmbrCentral.Editor
  107. Gem::PhysX.NumericalMethods
  108. Gem::PhysX.Static
  109. Gem::AtomLyIntegration_CommonFeatures.Static
  110. RUNTIME_DEPENDENCIES
  111. AZ::SceneCore
  112. )
  113. ly_add_target(
  114. NAME PhysX.Editor GEM_MODULE
  115. NAMESPACE Gem
  116. OUTPUT_NAME PhysX.Editor.Gem
  117. AUTOMOC
  118. FILES_CMAKE
  119. physx_editor_shared_files.cmake
  120. COMPILE_DEFINITIONS
  121. PUBLIC
  122. PHYSX_ENABLE_MULTI_THREADING
  123. INCLUDE_DIRECTORIES
  124. PRIVATE
  125. .
  126. Source
  127. ${pal_source_dir}
  128. PUBLIC
  129. Include
  130. BUILD_DEPENDENCIES
  131. PRIVATE
  132. Gem::PhysX.Editor.Static
  133. )
  134. # use the PhysX.Editor module in dev tools:
  135. ly_create_alias(NAME PhysX.Builders NAMESPACE Gem TARGETS Gem::PhysX.Editor)
  136. ly_create_alias(NAME PhysX.Tools NAMESPACE Gem TARGETS Gem::PhysX.Editor)
  137. endif()
  138. ################################################################################
  139. # Tests
  140. ################################################################################
  141. if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
  142. ly_add_target(
  143. NAME PhysX.Mocks HEADERONLY
  144. NAMESPACE Gem
  145. OUTPUT_NAME PhysX.Mocks.Gem
  146. FILES_CMAKE
  147. physx_mocks_files.cmake
  148. INCLUDE_DIRECTORIES
  149. INTERFACE
  150. Mocks
  151. )
  152. ly_add_target(
  153. NAME PhysX.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
  154. NAMESPACE Gem
  155. OUTPUT_NAME PhysX.Tests.Gem
  156. FILES_CMAKE
  157. physx_tests_files.cmake
  158. INCLUDE_DIRECTORIES
  159. PRIVATE
  160. Tests
  161. BUILD_DEPENDENCIES
  162. PRIVATE
  163. AZ::AzTestShared
  164. AZ::AzTest
  165. Gem::PhysX.Static
  166. Gem::LmbrCentral
  167. RUNTIME_DEPENDENCIES
  168. Gem::LmbrCentral
  169. )
  170. ly_add_googletest(
  171. NAME Gem::PhysX.Tests
  172. LABELS REQUIRES_tiaf
  173. )
  174. # Only add the physx benchmarks if this flag is set. The benchmark code is still built, as it is part of the PhysX.Tests project.
  175. # Currently jenkins has a 1500sec(25min) timeout, our benchmarks can sometimes take over 1500sec and cause a build failure for timeout.
  176. # Jenkins currently doesn't upload the results of the benchmarks, so this is ok.
  177. if(LY_PHYSX_ENABLE_RUNNING_BENCHMARKS)
  178. ly_add_googlebenchmark(
  179. NAME Gem::PhysX.Benchmarks
  180. TARGET Gem::PhysX.Tests
  181. )
  182. endif()
  183. list(APPEND testTargets PhysX.Tests)
  184. if (PAL_TRAIT_BUILD_HOST_TOOLS)
  185. ly_add_target(
  186. NAME PhysX.Editor.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
  187. NAMESPACE Gem
  188. OUTPUT_NAME PhysX.Editor.Tests.Gem
  189. FILES_CMAKE
  190. physx_editor_tests_files.cmake
  191. INCLUDE_DIRECTORIES
  192. PRIVATE
  193. Tests
  194. Source
  195. .
  196. BUILD_DEPENDENCIES
  197. PRIVATE
  198. 3rdParty::Qt::Test
  199. AZ::AzTestShared
  200. AZ::AzTest
  201. AZ::AzToolsFrameworkTestCommon
  202. AZ::AzManipulatorTestFramework.Static
  203. Gem::PhysX.Static
  204. Gem::PhysX.Mocks
  205. Gem::PhysX.Editor.Static
  206. RUNTIME_DEPENDENCIES
  207. Gem::LmbrCentral.Editor
  208. )
  209. ly_add_googletest(
  210. NAME Gem::PhysX.Editor.Tests
  211. LABELS REQUIRES_tiaf
  212. )
  213. endif()
  214. endif()