-
Notifications
You must be signed in to change notification settings - Fork 299
/
CMakeLists.txt
118 lines (103 loc) · 4.81 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
cmake_minimum_required(VERSION 3.22)
project(BulletCollisionDetection LANGUAGES CXX VERSION 0.1)
#WARNING, when installing bullet write in the bullet CMakeLists.txt the line add_definitions(-DBULLET_TRIANGLE_COLLISION)
# todo: is it possible to do a platform check for BULLET_TRIANGLE_COLLISION?
set(BULLETCOLLISIONDETECTION_SRC src/BulletCollisionDetection)
set(HEADER_FILES
${BULLETCOLLISIONDETECTION_SRC}/config.h.in
${BULLETCOLLISIONDETECTION_SRC}/init.h
${BULLETCOLLISIONDETECTION_SRC}/BtDynamicMesh.h
${BULLETCOLLISIONDETECTION_SRC}/BtInterManager.h
${BULLETCOLLISIONDETECTION_SRC}/BulletCapsuleModel.h
${BULLETCOLLISIONDETECTION_SRC}/BulletCapsuleModel.inl
${BULLETCOLLISIONDETECTION_SRC}/BulletCollisionDetection.h
${BULLETCOLLISIONDETECTION_SRC}/BulletCollisionModel.h
${BULLETCOLLISIONDETECTION_SRC}/BulletConvexHullContactMapper.h
${BULLETCOLLISIONDETECTION_SRC}/BulletConvexHullModel.h
${BULLETCOLLISIONDETECTION_SRC}/BulletConvexHullModel.inl
${BULLETCOLLISIONDETECTION_SRC}/BulletCylinderModel.h
${BULLETCOLLISIONDETECTION_SRC}/BulletCylinderModel.inl
${BULLETCOLLISIONDETECTION_SRC}/BulletOBBModel.h
${BULLETCOLLISIONDETECTION_SRC}/BulletOBBModel.inl
${BULLETCOLLISIONDETECTION_SRC}/BulletSphereModel.h
${BULLETCOLLISIONDETECTION_SRC}/BulletSphereModel.inl
${BULLETCOLLISIONDETECTION_SRC}/BulletTriangleModel.h
${BULLETCOLLISIONDETECTION_SRC}/BulletTriangleModel.inl
)
set(SOURCE_FILES
${BULLETCOLLISIONDETECTION_SRC}/init.cpp
${BULLETCOLLISIONDETECTION_SRC}/BulletCapsuleModel.cpp
${BULLETCOLLISIONDETECTION_SRC}/BulletCollisionDetection.cpp
${BULLETCOLLISIONDETECTION_SRC}/BulletConvexHullContactMapper.cpp
${BULLETCOLLISIONDETECTION_SRC}/BulletConvexHullContacts.cpp
${BULLETCOLLISIONDETECTION_SRC}/BulletConvexHullModel.cpp
${BULLETCOLLISIONDETECTION_SRC}/BulletCylinderModel.cpp
${BULLETCOLLISIONDETECTION_SRC}/BulletOBBModel.cpp
${BULLETCOLLISIONDETECTION_SRC}/BulletSphereModel.cpp
${BULLETCOLLISIONDETECTION_SRC}/BulletTriangleModel.cpp
)
set(README_FILES BulletCollisionDetection.txt)
find_package(Sofa.Config REQUIRED)
sofa_find_package(Sofa.Component.Collision REQUIRED)
sofa_find_package(CollisionOBBCapsule REQUIRED)
sofa_find_package(Sofa.GL REQUIRED)
# sofa_find_package(SofaVolumetricData REQUIRED)
find_package(Compliant QUIET)
find_package(LMConstraint QUIET)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
find_package(Bullet REQUIRED)
include_directories(${BULLET_INCLUDE_DIRS})
link_directories(${BULLET_LIBRARY_DIRS})
message(STATUS "BULLET_INCLUDE_DIRS: ${BULLET_INCLUDE_DIRS}")
message(STATUS "BULLET_LIBRARIES: ${BULLET_LIBRARIES}")
# HACD (present in the lib dir of bullet) is not set by FindBullet
# this should set the correct path
set(HACD_LIB "")
if(BULLET_LIBRARIES)
list(GET BULLET_LIBRARIES 0 first_bullet_lib_path)
get_filename_component(bullet_lib_dir "${first_bullet_lib_path}" DIRECTORY)
if(WIN32)
set(HACD_LIB "${bullet_lib_dir}/HACD.lib")
elseif(UNIX AND NOT APPLE)
# on Ubuntu, this is installed with libbullet-extras-dev
set(HACD_LIB "${bullet_lib_dir}/libHACD.so")
else()
# MacOS ? todo
endif()
endif()
if(EXISTS "${HACD_LIB}")
message(STATUS "HACD_LIB: ${HACD_LIB}")
else()
message(SEND_ERROR "Could not find HACD, necessary to build ConvexHull." )
endif()
if(Compliant_FOUND)
list(APPEND SOURCE_FILES ${BULLETCOLLISIONDETECTION_SRC}/BulletConvexHullCompliantContacts.cpp)
else()
message(STATUS "BulletCollisionDetection: could not find Compliant, won't build BulletConvexHullCompliantContacts")
endif()
if(LMConstraint_FOUND)
list(APPEND HEADER_FILES ${BULLETCOLLISIONDETECTION_SRC}/BulletConvexHullContacts.cpp)
list(APPEND SOURCE_FILES ${BULLETCOLLISIONDETECTION_SRC}/BulletConvexHullContacts.cpp)
else()
message(STATUS "BulletCollisionDetection: could not find LMConstraint, won't build BulletConvexHullContacts")
endif()
add_library(${PROJECT_NAME} SHARED ${HEADER_FILES} ${SOURCE_FILES} ${README_FILES})
target_link_libraries(${PROJECT_NAME} Sofa.Component.Collision ${BULLET_LIBRARIES} ${HACD_LIB} CollisionOBBCapsule Sofa.GL)
if(Compliant_FOUND)
target_link_libraries(${PROJECT_NAME} Compliant)
endif()
sofa_create_package_with_targets(
PACKAGE_NAME ${PROJECT_NAME}
PACKAGE_VERSION ${PROJECT_VERSION}
TARGETS ${PROJECT_NAME} AUTO_SET_TARGET_PROPERTIES
INCLUDE_SOURCE_DIR "src"
INCLUDE_INSTALL_DIR ${PROJECT_NAME}
RELOCATABLE "plugins"
)
# Tests
# If SOFA_BUILD_TESTS exists and is OFF, then these tests will be auto-disabled
cmake_dependent_option(BULLETCOLLISIONDETECTION_BUILD_TESTS "Compile the automatic tests" ON "SOFA_BUILD_TESTS OR NOT DEFINED SOFA_BUILD_TESTS" OFF)
if(BULLETCOLLISIONDETECTION_BUILD_TESTS)
enable_testing()
add_subdirectory(BulletCollisionDetection_test)
endif()