123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284 |
- # -----------------------------------------------------------------------------
- # Copyright (c) 2017 GarageGames, LLC
- #
- # Permission is hereby granted, free of charge, to any person obtaining a copy
- # of this software and associated documentation files (the "Software"), to
- # deal in the Software without restriction, including without limitation the
- # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- # sell copies of the Software, and to permit persons to whom the Software is
- # furnished to do so, subject to the following conditions:
- #
- # The above copyright notice and this permission notice shall be included in
- # all copies or substantial portions of the Software.
- #
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- # IN THE SOFTWARE.
- # -----------------------------------------------------------------------------
- # module Physx 3.4
- #do note the inconsistent upper/lower case nvidia use for directory names in physx
- option(TORQUE_PHYSICS_PHYSX3 "Use PhysX 3.4 physics" OFF)
- if( NOT TORQUE_PHYSICS_PHYSX3 )
- return()
- endif()
- if("${PHYSX3_BASE_PATH}" STREQUAL "")
- set(PHYSX3_BASE_PATH "" CACHE PATH "PhysX 3.4 path" FORCE)
- endif()
- #still no path we can't go any further
- if("${PHYSX3_BASE_PATH}" STREQUAL "")
- message(FATAL_ERROR "No PhysX path selected")
- return()
- endif()
- #set physx path
- set(PHYSX3_PATH "${PHYSX3_BASE_PATH}/PhysX_3.4")
- # Windows/ Visual Studio
- if(MSVC)
- if(TORQUE_CPU_X32)
- if(MSVC_VERSION EQUAL 1800 )
- set(PHYSX3_LIBPATH_PREFIX vc12win32)
- elseif(MSVC_VERSION EQUAL 1900)
- set(PHYSX3_LIBPATH_PREFIX vc14win32)
- elseif(MSVC_VERSION GREATER_EQUAL 1910)
- set(PHYSX3_LIBPATH_PREFIX vc15win32)
- else()
- message(FATAL_ERROR "This version of VS is not supported")
- return()
- endif()
- set(PHYSX3_LIBNAME_POSTFIX _x86)
- elseif(TORQUE_CPU_X64)
- if(MSVC_VERSION EQUAL 1800 )
- set(PHYSX3_LIBPATH_PREFIX vc12win64)
- elseif(MSVC_VERSION EQUAL 1900)
- set(PHYSX3_LIBPATH_PREFIX vc14win64)
- elseif(MSVC_VERSION GREATER_EQUAL 1910)
- set(PHYSX3_LIBPATH_PREFIX vc15win64)
- else()
- message(FATAL_ERROR "This version of VS is not supported")
- return()
- endif()
- set(PHYSX3_LIBNAME_POSTFIX _x64)
- endif()
- endif()
- # Only suport 64bit on macOS and linux
- if(APPLE)
- set(PHYSX3_LIBPATH_PREFIX osx64)
- set(PHYSX3_LIBNAME_POSTFIX _x64)
- elseif(UNIX)
- set(PHYSX3_LIBPATH_PREFIX linux64)
- set(PHYSX3_LIBNAME_POSTFIX _x64)
- endif()
- MACRO(FIND_PHYSX3_LIBRARY VARNAME LIBNAME WITHPOSTFIX SEARCHDIR)
- set(LIBPOSTFIX "")
- if(${WITHPOSTFIX})
- set(LIBPOSTFIX ${PHYSX3_LIBNAME_POSTFIX})
- endif(${WITHPOSTFIX})
- #release
- find_library(PHYSX3_${VARNAME}_LIBRARY NAMES ${LIBNAME}${LIBPOSTFIX} PATHS ${SEARCHDIR}${PHYSX3_LIBPATH_PREFIX})
- #debug
- find_library(PHYSX3_${VARNAME}_LIBRARY_DEBUG NAMES ${LIBNAME}DEBUG${LIBPOSTFIX} PATHS ${SEARCHDIR}${PHYSX3_LIBPATH_PREFIX})
- ENDMACRO()
- # Find the Libs
- if( WIN32 )
- FIND_PHYSX3_LIBRARY(CORE PhysX3 1 ${PHYSX3_PATH}/Lib/)
- FIND_PHYSX3_LIBRARY(COMMON PhysX3Common 1 ${PHYSX3_PATH}/Lib/)
- FIND_PHYSX3_LIBRARY(COOKING PhysX3Cooking 1 ${PHYSX3_PATH}/Lib/)
- FIND_PHYSX3_LIBRARY(CHARACTER PhysX3CharacterKinematic 1 ${PHYSX3_PATH}/Lib/)
- FIND_PHYSX3_LIBRARY(EXTENSIONS PhysX3Extensions 0 ${PHYSX3_PATH}/Lib/)
- FIND_PHYSX3_LIBRARY(TASK PxTask 1 ${PHYSX3_BASE_PATH}/PxShared/Lib/)
- FIND_PHYSX3_LIBRARY(FOUNDATION PxFoundation 1 ${PHYSX3_BASE_PATH}/PxShared/Lib/)
- FIND_PHYSX3_LIBRARY(PVD PxPvdSDK 1 ${PHYSX3_BASE_PATH}/PxShared/Lib/)
- if(NOT PHYSX3_CORE_LIBRARY)
- message(FATAL_ERROR "Could not find core PhysX lib")
- return()
- endif()
- #Add the libs
- set(PHYSX_LIBRARIES
- ${PHYSX3_CORE_LIBRARY}
- ${PHYSX3_COMMON_LIBRARY}
- ${PHYSX3_EXTENSIONS_LIBRARY}
- ${PHYSX3_COOKING_LIBRARY}
- ${PHYSX3_CHARACTER_LIBRARY}
- ${PHYSX3_TASK_LIBRARY}
- ${PHYSX3_PVD_LIBRARY}
- ${PHYSX3_FOUNDATION_LIBRARY}
- )
- set(PHYSX_LIBRARIES_DEBUG
- ${PHYSX3_CORE_LIBRARY_DEBUG}
- ${PHYSX3_COMMON_LIBRARY_DEBUG}
- ${PHYSX3_EXTENSIONS_LIBRARY_DEBUG}
- ${PHYSX3_COOKING_LIBRARY_DEBUG}
- ${PHYSX3_CHARACTER_LIBRARY_DEBUG}
- ${PHYSX3_TASK_LIBRARY_DEBUG}
- ${PHYSX3_PVD_LIBRARY_DEBUG}
- ${PHYSX3_FOUNDATION_LIBRARY_DEBUG}
- )
- #macOS & linux
- elseif(UNIX)
- #common
- FIND_PHYSX3_LIBRARY(EXTENSIONS PhysX3Extensions 0 ${PHYSX3_PATH}/Lib/)
- FIND_PHYSX3_LIBRARY(CONTROLLER SimulationController 0 ${PHYSX3_PATH}/Lib/)
- FIND_PHYSX3_LIBRARY(SCENEQUERY SceneQuery 0 ${PHYSX3_PATH}/Lib/)
- FIND_PHYSX3_LIBRARY(LOWLEVEL LowLevel 0 ${PHYSX3_PATH}/Lib/)
- FIND_PHYSX3_LIBRARY(LOWLEVEL_DYNAMICS LowLevelDynamics 0 ${PHYSX3_PATH}/Lib/)
- FIND_PHYSX3_LIBRARY(LOWLEVEL_AABB LowLevelAABB 0 ${PHYSX3_PATH}/Lib/)
- FIND_PHYSX3_LIBRARY(LOWLEVEL_CLOTH LowLevelCloth 0 ${PHYSX3_PATH}/Lib/)
- FIND_PHYSX3_LIBRARY(LOWLEVEL_PARTICLES LowLevelParticles 0 ${PHYSX3_PATH}/Lib/)
- FIND_PHYSX3_LIBRARY(TASK PxTask 0 ${PHYSX3_BASE_PATH}/PxShared/lib/)
- #platform dependent
- if(APPLE)
- FIND_PHYSX3_LIBRARY(CORE PhysX3 0 ${PHYSX3_PATH}/Lib/)
- FIND_PHYSX3_LIBRARY(COMMON PhysX3Common 0 ${PHYSX3_PATH}/Lib/)
- FIND_PHYSX3_LIBRARY(COOKING PhysX3Cooking 0 ${PHYSX3_PATH}/Lib/)
- FIND_PHYSX3_LIBRARY(CHARACTER PhysX3CharacterKinematic 0 ${PHYSX3_PATH}/Lib/)
- FIND_PHYSX3_LIBRARY(FOUNDATION PxFoundation 0 ${PHYSX3_BASE_PATH}/PxShared/lib/)
- FIND_PHYSX3_LIBRARY(PVD PxPvdSDK 0 ${PHYSX3_BASE_PATH}/PxShared/lib/)
- else() #linux
- FIND_PHYSX3_LIBRARY(CORE PhysX3 1 ${PHYSX3_PATH}/Bin/)
- FIND_PHYSX3_LIBRARY(COMMON PhysX3Common 1 ${PHYSX3_PATH}/Bin/)
- FIND_PHYSX3_LIBRARY(GPU PhysX3Gpu 1 ${PHYSX3_PATH}/Bin/)
- FIND_PHYSX3_LIBRARY(CHARACTER PhysX3CharacterKinematic 1 ${PHYSX3_PATH}/Bin/)
- FIND_PHYSX3_LIBRARY(COOKING PhysX3Cooking 1 ${PHYSX3_PATH}/Bin/)
- FIND_PHYSX3_LIBRARY(FOUNDATION PxFoundation 1 ${PHYSX3_BASE_PATH}/PxShared/bin/)
- FIND_PHYSX3_LIBRARY(PVD PxPvdSDK 1 ${PHYSX3_BASE_PATH}/PxShared/bin/)
- FIND_PHYSX3_LIBRARY(XML PsFastXml 0 ${PHYSX3_BASE_PATH}/PxShared/lib/)
- endif()
- if(NOT PHYSX3_CORE_LIBRARY)
- message(FATAL_ERROR "Could not find core PhysX lib")
- return()
- endif()
- #Add the libs
- set(PHYSX_LIBRARIES
- ${PHYSX3_CORE_LIBRARY}
- ${PHYSX3_CHARACTER_LIBRARY}
- ${PHYSX3_COOKING_LIBRARY}
- ${PHYSX3_COMMON_LIBRARY}
- ${PHYSX3_GPU_LIBRARY}
- ${PHYSX3_EXTENSIONS_LIBRARY}
- ${PHYSX3_CONTROLLER_LIBRARY}
- ${PHYSX3_SCENEQUERY_LIBRARY}
- ${PHYSX3_LOWLEVEL_LIBRARY}
- ${PHYSX3_LOWLEVEL_AABB_LIBRARY}
- ${PHYSX3_LOWLEVEL_DYNAMICS_LIBRARY}
- ${PHYSX3_LOWLEVEL_CLOTH_LIBRARY}
- ${PHYSX3_LOWLEVEL_PARTICLES_LIBRARY}
- ${PHYSX3_TASK_LIBRARY}
- ${PHYSX3_XML_LIBRARY}
- ${PHYSX3_FOUNDATION_LIBRARY}
- ${PHYSX3_PVD_LIBRARY}
- )
- set(PHYSX_LIBRARIES_DEBUG
- ${PHYSX3_CORE_LIBRARY_DEBUG}
- ${PHYSX3_CHARACTER_LIBRARY_DEBUG}
- ${PHYSX3_COOKING_LIBRARY_DEBUG}
- ${PHYSX3_COMMON_LIBRARY_DEBUG}
- ${PHYSX3_GPU_LIBRARY_DEBUG}
- ${PHYSX3_EXTENSIONS_LIBRARY_DEBUG}
- ${PHYSX3_CONTROLLER_LIBRARY_DEBUG}
- ${PHYSX3_SCENEQUERY_LIBRARY_DEBUG}
- ${PHYSX3_LOWLEVEL_LIBRARY_DEBUG}
- ${PHYSX3_LOWLEVEL_AABB_LIBRARY_DEBUG}
- ${PHYSX3_LOWLEVEL_DYNAMICS_LIBRARY_DEBUG}
- ${PHYSX3_LOWLEVEL_CLOTH_LIBRARY_DEBUG}
- ${PHYSX3_LOWLEVEL_PARTICLES_LIBRARY_DEBUG}
- ${PHYSX3_TASK_LIBRARY_DEBUG}
- ${PHYSX3_XML_LIBRARY_DEBUG}
- ${PHYSX3_FOUNDATION_LIBRARY_DEBUG}
- ${PHYSX3_PVD_LIBRARY_DEBUG}
- )
- endif()
- # Defines
- addDef( "TORQUE_PHYSICS_PHYSX3" )
- addDef( "TORQUE_PHYSICS_ENABLED" )
- # Source
- addPath( "${srcDir}/T3D/physics/physx3" )
- # Includes
- addInclude( "${PHYSX3_BASE_PATH}/PxShared/include" )
- addInclude( "${PHYSX3_BASE_PATH}/PxShared/src/foundation/include" )
- addInclude( "${PHYSX3_BASE_PATH}/PxShared/src/pvd/include" )
- addInclude( "${PHYSX3_PATH}/Include" )
- # Libs
- addLibRelease( "${PHYSX_LIBRARIES}" )
- addLibDebug( "${PHYSX_LIBRARIES_DEBUG}" )
- #Install files
- if( WIN32 )
- # File Copy for Release
- INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/PhysX3${PHYSX3_LIBNAME_POSTFIX}.dll" DESTINATION "${projectOutDir}" CONFIGURATIONS Release)
- INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/PhysX3Gpu${PHYSX3_LIBNAME_POSTFIX}.dll" DESTINATION "${projectOutDir}" CONFIGURATIONS Release)
- INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/PhysX3CharacterKinematic${PHYSX3_LIBNAME_POSTFIX}.dll" DESTINATION "${projectOutDir}" CONFIGURATIONS Release)
- INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/PhysX3Common${PHYSX3_LIBNAME_POSTFIX}.dll" DESTINATION "${projectOutDir}" CONFIGURATIONS Release)
- INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/PhysX3Cooking${PHYSX3_LIBNAME_POSTFIX}.dll" DESTINATION "${projectOutDir}" CONFIGURATIONS Release)
- INSTALL(FILES "${PHYSX3_BASE_PATH}/PxShared/bin/${PHYSX3_LIBPATH_PREFIX}/PxFoundation${PHYSX3_LIBNAME_POSTFIX}.dll" DESTINATION "${projectOutDir}" CONFIGURATIONS Release)
- INSTALL(FILES "${PHYSX3_BASE_PATH}/PxShared/bin/${PHYSX3_LIBPATH_PREFIX}/PxPvdSDK${PHYSX3_LIBNAME_POSTFIX}.dll" DESTINATION "${projectOutDir}" CONFIGURATIONS Release)
- # File Copy
- if(TORQUE_CPU_X32)
- INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/PhysXDevice.dll" DESTINATION "${projectOutDir}")
- INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/nvToolsExt32_1.dll" DESTINATION "${projectOutDir}" CONFIGURATIONS Debug)
- elseif(TORQUE_CPU_X64)
- INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/PhysXDevice64.dll" DESTINATION "${projectOutDir}")
- INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/nvToolsExt64_1.dll" DESTINATION "${projectOutDir}" CONFIGURATIONS Debug)
- endif()
-
- #File copy for Debug
- INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/PhysX3DEBUG${PHYSX3_LIBNAME_POSTFIX}.dll" DESTINATION "${projectOutDir}" CONFIGURATIONS Debug)
- INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/PhysX3GpuDEBUG${PHYSX3_LIBNAME_POSTFIX}.dll" DESTINATION "${projectOutDir}" CONFIGURATIONS Debug)
- INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/PhysX3CharacterKinematicDEBUG${PHYSX3_LIBNAME_POSTFIX}.dll" DESTINATION "${projectOutDir}" CONFIGURATIONS Debug)
- INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/PhysX3CommonDEBUG${PHYSX3_LIBNAME_POSTFIX}.dll" DESTINATION "${projectOutDir}" CONFIGURATIONS Debug)
- INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/PhysX3CookingDEBUG${PHYSX3_LIBNAME_POSTFIX}.dll" DESTINATION "${projectOutDir}" CONFIGURATIONS Debug)
- INSTALL(FILES "${PHYSX3_BASE_PATH}/PxShared/bin/${PHYSX3_LIBPATH_PREFIX}/PxFoundationDEBUG${PHYSX3_LIBNAME_POSTFIX}.dll" DESTINATION "${projectOutDir}" CONFIGURATIONS Debug)
- INSTALL(FILES "${PHYSX3_BASE_PATH}/PxShared/bin/${PHYSX3_LIBPATH_PREFIX}/PxPvdSDKDEBUG${PHYSX3_LIBNAME_POSTFIX}.dll" DESTINATION "${projectOutDir}" CONFIGURATIONS Debug)
- endif()
- #linux - apple xcode physx build generates static libs
- if(UNIX AND NOT APPLE)
- # File Copy for Release
- INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/libPhysX3${PHYSX3_LIBNAME_POSTFIX}.so" DESTINATION "${projectOutDir}" CONFIGURATIONS Release)
- INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/libPhysX3CharacterKinematic${PHYSX3_LIBNAME_POSTFIX}.so" DESTINATION "${projectOutDir}" CONFIGURATIONS Release)
- INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/libPhysX3Common${PHYSX3_LIBNAME_POSTFIX}.so" DESTINATION "${projectOutDir}" CONFIGURATIONS Release)
- INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/libPhysX3Cooking${PHYSX3_LIBNAME_POSTFIX}.so" DESTINATION "${projectOutDir}" CONFIGURATIONS Release)
- INSTALL(FILES "${PHYSX3_BASE_PATH}/PxShared/bin/${PHYSX3_LIBPATH_PREFIX}/libPxFoundation${PHYSX3_LIBNAME_POSTFIX}.so" DESTINATION "${projectOutDir}" CONFIGURATIONS Release)
- INSTALL(FILES "${PHYSX3_BASE_PATH}/PxShared/bin/${PHYSX3_LIBPATH_PREFIX}/libPxPvdSDK${PHYSX3_LIBNAME_POSTFIX}.so" DESTINATION "${projectOutDir}" CONFIGURATIONS Release)
- INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/libPhysX3Gpu${PHYSX3_LIBNAME_POSTFIX}.so" DESTINATION "${projectOutDir}" CONFIGURATIONS Release)
- # File Copy for Debug
- INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/libPhysX3DEBUG${PHYSX3_LIBNAME_POSTFIX}.so" DESTINATION "${projectOutDir}" CONFIGURATIONS Debug)
- INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/libPhysX3CharacterKinematicDEBUG${PHYSX3_LIBNAME_POSTFIX}.so" DESTINATION "${projectOutDir}" CONFIGURATIONS Debug)
- INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/libPhysX3CommonDEBUG${PHYSX3_LIBNAME_POSTFIX}.so" DESTINATION "${projectOutDir}" CONFIGURATIONS Debug)
- INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/libPhysX3CookingDEBUG${PHYSX3_LIBNAME_POSTFIX}.so" DESTINATION "${projectOutDir}" CONFIGURATIONS Debug)
- INSTALL(FILES "${PHYSX3_BASE_PATH}/PxShared/bin/${PHYSX3_LIBPATH_PREFIX}/libPxFoundationDEBUG${PHYSX3_LIBNAME_POSTFIX}.so" DESTINATION "${projectOutDir}" CONFIGURATIONS Debug)
- INSTALL(FILES "${PHYSX3_BASE_PATH}/PxShared/bin/${PHYSX3_LIBPATH_PREFIX}/libPxPvdSDKDEBUG${PHYSX3_LIBNAME_POSTFIX}.so" DESTINATION "${projectOutDir}" CONFIGURATIONS Debug)
- INSTALL(FILES "${PHYSX3_PATH}/Bin/${PHYSX3_LIBPATH_PREFIX}/libPhysX3GpuDEBUG${PHYSX3_LIBNAME_POSTFIX}.so" DESTINATION "${projectOutDir}" CONFIGURATIONS Debug)
- endif()
|