# Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file LICENSE.rst or https://cmake.org/licensing for details. #[=======================================================================[.rst: FindBullet ---------- Finds the Bullet physics engine: .. code-block:: cmake find_package(Bullet [...]) Result Variables ^^^^^^^^^^^^^^^^ This module defines the following variables: ``Bullet_FOUND`` .. versionadded:: 3.3 Boolean indicating whether Bullet was found. ``BULLET_INCLUDE_DIRS`` The Bullet include directories. ``BULLET_LIBRARIES`` Libraries needed to link to Bullet. By default, all Bullet components (Dynamics, Collision, LinearMath, and SoftBody) are added. Hints ^^^^^ This module accepts the following variables: ``BULLET_ROOT`` Can be set to Bullet install path or Windows build path to specify where to find Bullet. Deprecated Variables ^^^^^^^^^^^^^^^^^^^^ The following variables are provided for backward compatibility: ``BULLET_FOUND`` .. deprecated:: 4.2 Use ``Bullet_FOUND``, which has the same value. Boolean indicating whether Bullet was found. Examples ^^^^^^^^ Finding Bullet and conditionally creating an interface :ref:`imported target ` that encapsulates its usage requirements for linking to a project target: .. code-block:: cmake find_package(Bullet) if(Bullet_FOUND AND NOT TARGET Bullet::Bullet) add_library(Bullet::Bullet INTERFACE IMPORTED) set_target_properties( Bullet::Bullet PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${BULLET_INCLUDE_DIRS}" INTERFACE_LINK_LIBRARIES "${BULLET_LIBRARIES}" ) endif() target_link_libraries(example PRIVATE Bullet::Bullet) #]=======================================================================] macro(_FIND_BULLET_LIBRARY _var) find_library(${_var} NAMES ${ARGN} HINTS ${BULLET_ROOT} ${BULLET_ROOT}/lib/Release ${BULLET_ROOT}/lib/Debug ${BULLET_ROOT}/out/release8/libs ${BULLET_ROOT}/out/debug8/libs PATH_SUFFIXES lib ) mark_as_advanced(${_var}) endmacro() macro(_BULLET_APPEND_LIBRARIES _list _release) set(_debug ${_release}_DEBUG) if(${_debug}) set(${_list} ${${_list}} optimized ${${_release}} debug ${${_debug}}) else() set(${_list} ${${_list}} ${${_release}}) endif() endmacro() find_path(BULLET_INCLUDE_DIR NAMES btBulletCollisionCommon.h HINTS ${BULLET_ROOT}/include ${BULLET_ROOT}/src PATH_SUFFIXES bullet ) # Find the libraries _FIND_BULLET_LIBRARY(BULLET_DYNAMICS_LIBRARY BulletDynamics) _FIND_BULLET_LIBRARY(BULLET_DYNAMICS_LIBRARY_DEBUG BulletDynamics_Debug BulletDynamics_d) _FIND_BULLET_LIBRARY(BULLET_COLLISION_LIBRARY BulletCollision) _FIND_BULLET_LIBRARY(BULLET_COLLISION_LIBRARY_DEBUG BulletCollision_Debug BulletCollision_d) _FIND_BULLET_LIBRARY(BULLET_MATH_LIBRARY BulletMath LinearMath) _FIND_BULLET_LIBRARY(BULLET_MATH_LIBRARY_DEBUG BulletMath_Debug BulletMath_d LinearMath_Debug LinearMath_d) _FIND_BULLET_LIBRARY(BULLET_SOFTBODY_LIBRARY BulletSoftBody) _FIND_BULLET_LIBRARY(BULLET_SOFTBODY_LIBRARY_DEBUG BulletSoftBody_Debug BulletSoftBody_d) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Bullet DEFAULT_MSG BULLET_DYNAMICS_LIBRARY BULLET_COLLISION_LIBRARY BULLET_MATH_LIBRARY BULLET_SOFTBODY_LIBRARY BULLET_INCLUDE_DIR) set(BULLET_INCLUDE_DIRS ${BULLET_INCLUDE_DIR}) if(Bullet_FOUND) _BULLET_APPEND_LIBRARIES(BULLET_LIBRARIES BULLET_DYNAMICS_LIBRARY) _BULLET_APPEND_LIBRARIES(BULLET_LIBRARIES BULLET_COLLISION_LIBRARY) _BULLET_APPEND_LIBRARIES(BULLET_LIBRARIES BULLET_MATH_LIBRARY) _BULLET_APPEND_LIBRARIES(BULLET_LIBRARIES BULLET_SOFTBODY_LIBRARY) endif()