module_physx3.cmake 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. # -----------------------------------------------------------------------------
  2. # Copyright (c) 2015 GarageGames, LLC
  3. #
  4. # Permission is hereby granted, free of charge, to any person obtaining a copy
  5. # of this software and associated documentation files (the "Software"), to
  6. # deal in the Software without restriction, including without limitation the
  7. # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
  8. # sell copies of the Software, and to permit persons to whom the Software is
  9. # furnished to do so, subject to the following conditions:
  10. #
  11. # The above copyright notice and this permission notice shall be included in
  12. # all copies or substantial portions of the Software.
  13. #
  14. # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  15. # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  16. # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  17. # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  18. # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  19. # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
  20. # IN THE SOFTWARE.
  21. # -----------------------------------------------------------------------------
  22. # module Physx 3.3
  23. option(TORQUE_PHYSICS_PHYSX3 "Use PhysX 3.3 physics" OFF)
  24. if( NOT TORQUE_PHYSICS_PHYSX3 )
  25. return()
  26. endif()
  27. if("${PHYSX3_BASE_PATH}" STREQUAL "")
  28. set(PHYSX3_BASE_PATH "" CACHE PATH "PhysX 3.3 path" FORCE)
  29. endif()
  30. #still no path we can't go any further
  31. if("${PHYSX3_BASE_PATH}" STREQUAL "")
  32. message(FATAL_ERROR "No PhysX path selected")
  33. return()
  34. endif()
  35. #set physx path
  36. set(PHYSX3_PATH "${PHYSX3_BASE_PATH}/PhysXSDK")
  37. # TODO linux support
  38. if(MSVC)
  39. if(TORQUE_CPU_X32)
  40. if(MSVC11)
  41. set(PHYSX3_LIBPATH_PREFIX vc11win32)
  42. elseif(MSVC12)
  43. set(PHYSX3_LIBPATH_PREFIX vc12win32)
  44. elseif(MSVC14)
  45. set(PHYSX3_LIBPATH_PREFIX vc14win32)
  46. else()
  47. return()
  48. endif()
  49. set(PHYSX3_LIBNAME_POSTFIX _x86)
  50. elseif(TORQUE_CPU_X64)
  51. if(MSVC11)
  52. set(PHYSX3_LIBPATH_PREFIX vc11win64)
  53. elseif(MSVC12)
  54. set(PHYSX3_LIBPATH_PREFIX vc12win64)
  55. elseif(MSVC14)
  56. set(PHYSX3_LIBPATH_PREFIX vc14win64)
  57. else()
  58. return()
  59. endif()
  60. set(PHYSX3_LIBNAME_POSTFIX _x64)
  61. endif()
  62. endif(MSVC)
  63. MACRO(FIND_PHYSX3_LIBRARY VARNAME LIBNAME WITHPOSTFIX)
  64. set(LIBPOSTFIX "")
  65. if(${WITHPOSTFIX})
  66. set(LIBPOSTFIX ${PHYSX3_LIBNAME_POSTFIX})
  67. endif(${WITHPOSTFIX})
  68. find_library(PHYSX3_${VARNAME}_LIBRARY NAMES ${LIBNAME}${LIBPOSTFIX}
  69. PATHS ${PHYSX3_PATH}/Lib/${PHYSX3_LIBPATH_PREFIX})
  70. find_library(PHYSX3_${VARNAME}_LIBRARY_DEBUG NAMES ${LIBNAME}DEBUG${LIBPOSTFIX}
  71. PATHS ${PHYSX3_PATH}/Lib/${PHYSX3_LIBPATH_PREFIX})
  72. ENDMACRO(FIND_PHYSX3_LIBRARY VARNAME LIBNAME)
  73. # Find the Libs, we just use the full path to save playing around with link_directories
  74. FIND_PHYSX3_LIBRARY(CORE PhysX3 1)
  75. FIND_PHYSX3_LIBRARY(COMMON PhysX3Common 1)
  76. FIND_PHYSX3_LIBRARY(COOKING PhysX3Cooking 1)
  77. FIND_PHYSX3_LIBRARY(CHARACTER PhysX3CharacterKinematic 1)
  78. FIND_PHYSX3_LIBRARY(EXTENSIONS PhysX3Extensions 0)
  79. FIND_PHYSX3_LIBRARY(TASK PxTask 0)
  80. FIND_PHYSX3_LIBRARY(DEBUGGER PhysXVisualDebuggerSDK 0)
  81. FIND_PHYSX3_LIBRARY(PROFILE PhysXProfileSDK 0)
  82. if(NOT PHYSX3_CORE_LIBRARY)
  83. return()
  84. endif()
  85. # Defines
  86. addDef( "TORQUE_PHYSICS_PHYSX3" )
  87. addDef( "TORQUE_PHYSICS_ENABLED" )
  88. # Source
  89. addPath( "${srcDir}/T3D/physics/physx3" )
  90. # Includes
  91. addInclude( "${PHYSX3_PATH}/Include" )
  92. addInclude( "${PHYSX3_PATH}/Include/extensions" )
  93. addInclude( "${PHYSX3_PATH}/Include/foundation" )
  94. addInclude( "${PHYSX3_PATH}/Include/characterkinematic" )
  95. addInclude( "${PHYSX3_PATH}/Include/common" )
  96. #Add the libs
  97. set(PHYSX_LIBRARIES_DEBUG
  98. ${PHYSX3_CORE_LIBRARY_DEBUG}
  99. ${PHYSX3_COMMON_LIBRARY_DEBUG}
  100. ${PHYSX3_COOKING_LIBRARY_DEBUG}
  101. ${PHYSX3_CHARACTER_LIBRARY_DEBUG}
  102. ${PHYSX3_EXTENSIONS_LIBRARY_DEBUG}
  103. ${PHYSX3_TASK_LIBRARY_DEBUG}
  104. ${PHYSX3_DEBUGGER_LIBRARY_DEBUG}
  105. ${PHYSX3_PROFILE_LIBRARY_DEBUG}
  106. )
  107. set(PHYSX_LIBRARIES
  108. ${PHYSX3_CORE_LIBRARY}
  109. ${PHYSX3_COMMON_LIBRARY}
  110. ${PHYSX3_COOKING_LIBRARY}
  111. ${PHYSX3_CHARACTER_LIBRARY}
  112. ${PHYSX3_EXTENSIONS_LIBRARY}
  113. ${PHYSX3_TASK_LIBRARY}
  114. ${PHYSX3_DEBUGGER_LIBRARY}
  115. ${PHYSX3_PROFILE_LIBRARY}
  116. )
  117. addLibRelease("${PHYSX_LIBRARIES}")
  118. addLibDebug("${PHYSX_LIBRARIES_DEBUG}")
  119. #Install dll files
  120. if( WIN32 )
  121. # File Copy for Release
  122. INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/PhysX3${PHYSX3_LIBNAME_POSTFIX}.dll" DESTINATION "${projectOutDir}" CONFIGURATIONS "Release")
  123. INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/PhysX3CharacterKinematic${PHYSX3_LIBNAME_POSTFIX}.dll" DESTINATION "${projectOutDir}" CONFIGURATIONS "Release")
  124. INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/PhysX3Common${PHYSX3_LIBNAME_POSTFIX}.dll" DESTINATION "${projectOutDir}" CONFIGURATIONS "Release")
  125. INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/PhysX3Cooking${PHYSX3_LIBNAME_POSTFIX}.dll" DESTINATION "${projectOutDir}" CONFIGURATIONS "Release")
  126. # File Copy for Debug
  127. if(TORQUE_CPU_X32)
  128. INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/nvToolsExt32_1.dll" DESTINATION "${projectOutDir}" CONFIGURATIONS "Debug")
  129. elseif(TORQUE_CPU_X64)
  130. INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/nvToolsExt64_1.dll" DESTINATION "${projectOutDir}" CONFIGURATIONS "Debug")
  131. endif()
  132. INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/PhysX3DEBUG${PHYSX3_LIBNAME_POSTFIX}.dll" DESTINATION "${projectOutDir}" CONFIGURATIONS "Debug")
  133. INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/PhysX3CharacterKinematicDEBUG${PHYSX3_LIBNAME_POSTFIX}.dll" DESTINATION "${projectOutDir}" CONFIGURATIONS "Debug")
  134. INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/PhysX3CommonDEBUG${PHYSX3_LIBNAME_POSTFIX}.dll" DESTINATION "${projectOutDir}" CONFIGURATIONS "Debug")
  135. INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/PhysX3CookingDEBUG${PHYSX3_LIBNAME_POSTFIX}.dll" DESTINATION "${projectOutDir}" CONFIGURATIONS "Debug")
  136. endif(WIN32)