FindBullet.cmake 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. # Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. # file Copyright.txt or https://cmake.org/licensing for details.
  3. #.rst:
  4. # FindBullet
  5. # ----------
  6. #
  7. # Try to find the Bullet physics engine
  8. #
  9. #
  10. #
  11. # ::
  12. #
  13. # This module defines the following variables
  14. #
  15. #
  16. #
  17. # ::
  18. #
  19. # BULLET_FOUND - Was bullet found
  20. # BULLET_INCLUDE_DIRS - the Bullet include directories
  21. # BULLET_LIBRARIES - Link to this, by default it includes
  22. # all bullet components (Dynamics,
  23. # Collision, LinearMath, & SoftBody)
  24. #
  25. #
  26. #
  27. # ::
  28. #
  29. # This module accepts the following variables
  30. #
  31. #
  32. #
  33. # ::
  34. #
  35. # BULLET_ROOT - Can be set to bullet install path or Windows build path
  36. macro(_FIND_BULLET_LIBRARY _var)
  37. find_library(${_var}
  38. NAMES
  39. ${ARGN}
  40. HINTS
  41. ${BULLET_ROOT}
  42. ${BULLET_ROOT}/lib/Release
  43. ${BULLET_ROOT}/lib/Debug
  44. ${BULLET_ROOT}/out/release8/libs
  45. ${BULLET_ROOT}/out/debug8/libs
  46. PATH_SUFFIXES lib
  47. )
  48. mark_as_advanced(${_var})
  49. endmacro()
  50. macro(_BULLET_APPEND_LIBRARIES _list _release)
  51. set(_debug ${_release}_DEBUG)
  52. if(${_debug})
  53. set(${_list} ${${_list}} optimized ${${_release}} debug ${${_debug}})
  54. else()
  55. set(${_list} ${${_list}} ${${_release}})
  56. endif()
  57. endmacro()
  58. find_path(BULLET_INCLUDE_DIR NAMES btBulletCollisionCommon.h
  59. HINTS
  60. ${BULLET_ROOT}/include
  61. ${BULLET_ROOT}/src
  62. PATH_SUFFIXES bullet
  63. )
  64. # Find the libraries
  65. _FIND_BULLET_LIBRARY(BULLET_DYNAMICS_LIBRARY BulletDynamics)
  66. _FIND_BULLET_LIBRARY(BULLET_DYNAMICS_LIBRARY_DEBUG BulletDynamics_Debug BulletDynamics_d)
  67. _FIND_BULLET_LIBRARY(BULLET_COLLISION_LIBRARY BulletCollision)
  68. _FIND_BULLET_LIBRARY(BULLET_COLLISION_LIBRARY_DEBUG BulletCollision_Debug BulletCollision_d)
  69. _FIND_BULLET_LIBRARY(BULLET_MATH_LIBRARY BulletMath LinearMath)
  70. _FIND_BULLET_LIBRARY(BULLET_MATH_LIBRARY_DEBUG BulletMath_Debug BulletMath_d LinearMath_Debug LinearMath_d)
  71. _FIND_BULLET_LIBRARY(BULLET_SOFTBODY_LIBRARY BulletSoftBody)
  72. _FIND_BULLET_LIBRARY(BULLET_SOFTBODY_LIBRARY_DEBUG BulletSoftBody_Debug BulletSoftBody_d)
  73. include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
  74. FIND_PACKAGE_HANDLE_STANDARD_ARGS(Bullet DEFAULT_MSG
  75. BULLET_DYNAMICS_LIBRARY BULLET_COLLISION_LIBRARY BULLET_MATH_LIBRARY
  76. BULLET_SOFTBODY_LIBRARY BULLET_INCLUDE_DIR)
  77. set(BULLET_INCLUDE_DIRS ${BULLET_INCLUDE_DIR})
  78. if(BULLET_FOUND)
  79. _BULLET_APPEND_LIBRARIES(BULLET_LIBRARIES BULLET_DYNAMICS_LIBRARY)
  80. _BULLET_APPEND_LIBRARIES(BULLET_LIBRARIES BULLET_COLLISION_LIBRARY)
  81. _BULLET_APPEND_LIBRARIES(BULLET_LIBRARIES BULLET_MATH_LIBRARY)
  82. _BULLET_APPEND_LIBRARIES(BULLET_LIBRARIES BULLET_SOFTBODY_LIBRARY)
  83. endif()