Skip to content

Commit

Permalink
[bullet3] Revise, enable Bullet3 libs (microsoft#43095)
Browse files Browse the repository at this point in the history
  • Loading branch information
dg0yt authored Jan 7, 2025
1 parent e1b30bc commit f54003d
Show file tree
Hide file tree
Showing 13 changed files with 661 additions and 533 deletions.
460 changes: 460 additions & 0 deletions ports/bullet3/cmake-config-export.diff

Large diffs are not rendered by default.

517 changes: 0 additions & 517 deletions ports/bullet3/cmake-fix.patch

This file was deleted.

10 changes: 10 additions & 0 deletions ports/bullet3/cmake-version.diff
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a695b71..8c407de 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 2.4.3)
+cmake_minimum_required(VERSION 3.11)
set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
cmake_policy(SET CMP0017 NEW)
#this line has to appear before 'PROJECT' in order to be able to disable incremental linking
13 changes: 13 additions & 0 deletions ports/bullet3/opencl.diff
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
diff --git a/src/Bullet3OpenCL/CMakeLists.txt b/src/Bullet3OpenCL/CMakeLists.txt
index b93b80b..c9c985c 100644
--- a/src/Bullet3OpenCL/CMakeLists.txt
+++ b/src/Bullet3OpenCL/CMakeLists.txt
@@ -1,3 +1,8 @@
+option(BUILD_OPENCL "Build Bullet3OpenCL_clew")
+if(NOT BUILD_OPENCL)
+ return()
+endif()
+
INCLUDE_DIRECTORIES( ${BULLET_PHYSICS_SOURCE_DIR}/src )

ADD_DEFINITIONS(-DB3_USE_CLEW)
35 changes: 25 additions & 10 deletions ports/bullet3/portfile.cmake
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
if(VCPKG_TARGET_IS_WINDOWS)
vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
endif()

vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
Expand All @@ -7,45 +9,58 @@ vcpkg_from_github(
SHA512 7086e5fcf69635801bb311261173cb8d173b712ca1bd78be03df48fad884674e85512861190e45a1a62d5627aaad65cde08c175c44a3be9afa410d3dfd5358d4
HEAD_REF master
PATCHES
cmake-fix.patch
cmake-version.diff
cmake-config-export.diff
opencl.diff
tinyxml2.diff
)
file(REMOVE_RECURSE "${SOURCE_PATH}/examples/ThirdPartyLibs")

vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
FEATURES
multithreading BULLET2_MULTITHREADING
double-precision USE_DOUBLE_PRECISION
extras BUILD_EXTRAS
opencl BUILD_OPENCL
INVERTED_FEATURES
rtti USE_MSVC_DISABLE_RTTI
)

string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "dynamic" USE_MSVC_RUNTIME_LIBRARY_DLL)

vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS
-DUSE_MSVC_RUNTIME_LIBRARY_DLL=ON
-DUSE_MSVC_RUNTIME_LIBRARY_DLL=${USE_MSVC_RUNTIME_LIBRARY_DLL}
-DBUILD_CPU_DEMOS=OFF
-DBUILD_BULLET2_DEMOS=OFF
-DBUILD_OPENGL3_DEMOS=OFF
-DBUILD_BULLET3=OFF
-DBUILD_BULLET3=ON
-DBUILD_BULLET_ROBOTICS_GUI_EXTRA=OFF
-DBUILD_BULLET_ROBOTICS_EXTRA=OFF
-DBUILD_GIMPACTUTILS_EXTRA=OFF
-DBUILD_GIMPACTUTILS_EXTRA=OFF
-DBUILD_HACD_EXTRA=OFF
-DBUILD_OBJ2SDF_EXTRA=OFF
-DBUILD_UNIT_TESTS=OFF
-DINSTALL_LIBS=ON
-DCMAKE_POLICY_DEFAULT_CMP0057=NEW
${FEATURE_OPTIONS}
MAYBE_UNUSED_VARIABLES
BUILD_BULLET_ROBOTICS_EXTRA
BUILD_BULLET_ROBOTICS_GUI_EXTRA
BUILD_GIMPACTUTILS_EXTRA
BUILD_HACD_EXTRA
BUILD_OBJ2SDF_EXTRA
USE_MSVC_DISABLE_RTTI
)

vcpkg_cmake_install()
vcpkg_copy_pdbs()

vcpkg_cmake_config_fixup(PACKAGE_NAME bullet CONFIG_PATH share/bullet)

vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/bullet)
vcpkg_fixup_pkgconfig()

file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/include/bullet/BulletInverseDynamics/details")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/include/bullet/BulletInverseDynamics/details") # empty

file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.txt")
38 changes: 38 additions & 0 deletions ports/bullet3/tinyxml2.diff
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
diff --git a/BulletConfig.cmake.in b/BulletConfig.cmake.in
index 2d18304..9d97c77 100644
--- a/BulletConfig.cmake.in
+++ b/BulletConfig.cmake.in
@@ -15,6 +15,10 @@
# BULLET_VERSION_STRING - A human-readable string containing the version

@PACKAGE_INIT@
+if("@BUILD_EXTRAS@" AND NOT "@BUILD_SHARED_LIBS@")
+ include(CMakeFindDependencyMacro)
+ find_dependency(tinyxml2 CONFIG)
+endif()
include("${CMAKE_CURRENT_LIST_DIR}/BulletTargets.cmake")

set ( BULLET_FOUND 1 )
diff --git a/Extras/Serialize/BulletXmlWorldImporter/CMakeLists.txt b/Extras/Serialize/BulletXmlWorldImporter/CMakeLists.txt
index 4e16d9e..ab8eb9d 100644
--- a/Extras/Serialize/BulletXmlWorldImporter/CMakeLists.txt
+++ b/Extras/Serialize/BulletXmlWorldImporter/CMakeLists.txt
@@ -2,7 +2,6 @@ INCLUDE_DIRECTORIES(
${BULLET_PHYSICS_SOURCE_DIR}/src
${BULLET_PHYSICS_SOURCE_DIR}/Extras/Serialize/BulletFileLoader
${BULLET_PHYSICS_SOURCE_DIR}/Extras/Serialize/BulletWorldImporter
- ${BULLET_PHYSICS_SOURCE_DIR}/examples/ThirdPartyLibs/tinyxml2
)

ADD_LIBRARY(
@@ -11,8 +10,9 @@ ADD_LIBRARY(
btBulletXmlWorldImporter.h
string_split.cpp
string_split.h
- ${BULLET_PHYSICS_SOURCE_DIR}/examples/ThirdPartyLibs/tinyxml2/tinyxml2.cpp
)
+find_package(tinyxml2 CONFIG REQUIRED)
+target_link_libraries(BulletXmlWorldImporter PRIVATE tinyxml2::tinyxml2)

SET_TARGET_PROPERTIES(BulletXmlWorldImporter PROPERTIES VERSION ${BULLET_VERSION})
SET_TARGET_PROPERTIES(BulletXmlWorldImporter PROPERTIES SOVERSION ${BULLET_VERSION})
15 changes: 12 additions & 3 deletions ports/bullet3/usage
Original file line number Diff line number Diff line change
@@ -1,4 +1,13 @@
Bullet3 provides CMake targets:
bullet3 provides CMake targets:

find_package(Bullet CONFIG REQUIRED)
target_link_libraries(main PRIVATE ${BULLET_LIBRARIES})
find_package(Bullet CONFIG REQUIRED)
# specific set: BulletSoftBody, BulletDynamics, BulletInverseDynamics,
# BulletCollision, Bullet3Common, LinearMath
target_link_libraries(main PRIVATE ${BULLET_LIBRARIES})
# individual imported targets, e.g. for Bullet 3 libs
target_link_libraries(main PRIVATE Bullet3Dynamics)

bullet3 provides pkg-config modules:

# specific set: BulletSoftBody, BulletDynamics, BulletCollision, LinearMath
bullet
11 changes: 9 additions & 2 deletions ports/bullet3/vcpkg.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "bullet3",
"version": "3.25",
"port-version": 2,
"port-version": 3,
"description": "Bullet Physics is a professional collision detection, rigid body, and soft body dynamics library",
"homepage": "https://github.com/bulletphysics/bullet3",
"license": "Zlib",
Expand All @@ -20,11 +20,18 @@
"description": "Use float64 doubles for bullet3"
},
"extras": {
"description": "Build the extras"
"description": "Build selected extras",
"dependencies": [
"tinyxml2"
]
},
"multithreading": {
"description": "Multithreading functionality for bullet3"
},
"opencl": {
"description": "Build Bullet3OpenCL_clew library",
"supports": "!uwp"
},
"rtti": {
"description": "Enable RTTI on windows"
}
Expand Down
19 changes: 19 additions & 0 deletions scripts/test_ports/vcpkg-ci-bullet3/portfile.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
set(VCPKG_POLICY_EMPTY_PACKAGE enabled)

vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO bulletphysics/bullet3
REF 3.25
SHA512 7086e5fcf69635801bb311261173cb8d173b712ca1bd78be03df48fad884674e85512861190e45a1a62d5627aaad65cde08c175c44a3be9afa410d3dfd5358d4
HEAD_REF master
)

vcpkg_find_acquire_program(PKGCONFIG)

vcpkg_cmake_configure(
SOURCE_PATH "${CURRENT_PORT_DIR}/project"
OPTIONS
"-DSOURCE_PATH=${SOURCE_PATH}"
"-DPKG_CONFIG_EXECUTABLE=${PKGCONFIG}"
)
vcpkg_cmake_build()
24 changes: 24 additions & 0 deletions scripts/test_ports/vcpkg-ci-bullet3/project/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
cmake_minimum_required(VERSION 3.10)
project(bullet3-test CXX)

set(CMAKE_CXX_STANDARD 11)

block()
find_package(Bullet CONFIG REQUIRED)

add_executable(main "${SOURCE_PATH}/examples/HelloWorld/HelloWorld.cpp")
target_link_libraries(main PRIVATE ${BULLET_LIBRARIES})
endblock()

if(WIN32)
set(unused "${PKG_CONFIG_EXECUTABLE}")
return()
endif()

block()
find_package(PkgConfig REQUIRED)
pkg_check_modules(bullet bullet REQUIRED IMPORTED_TARGET)

add_executable(main-pkgconfig "${SOURCE_PATH}/examples/HelloWorld/HelloWorld.cpp")
target_link_libraries(main-pkgconfig PRIVATE PkgConfig::bullet)
endblock()
45 changes: 45 additions & 0 deletions scripts/test_ports/vcpkg-ci-bullet3/vcpkg.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
{
"name": "vcpkg-ci-bullet3",
"version-string": "ci",
"description": "Port to force features of bullet3 within CI",
"homepage": "https://github.com/microsoft/vcpkg",
"license": "MIT",
"dependencies": [
"bullet3",
{
"name": "vcpkg-cmake",
"host": true
}
],
"default-features": [
"extras",
{
"name": "opencl",
"platform": "!uwp"
}
],
"features": {
"extras": {
"description": "bullet3[extras]",
"dependencies": [
{
"name": "bullet3",
"features": [
"extras"
]
}
]
},
"opencl": {
"description": "bullet3[opencl]",
"dependencies": [
{
"name": "bullet3",
"features": [
"opencl"
]
}
]
}
}
}
5 changes: 5 additions & 0 deletions versions/b-/bullet3.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "8924ba3500ee3fb1124f3b827b86e0d456b90dd7",
"version": "3.25",
"port-version": 3
},
{
"git-tree": "8ee7660a10459f4d3d11054ab88177126d2131ca",
"version": "3.25",
Expand Down
2 changes: 1 addition & 1 deletion versions/baseline.json
Original file line number Diff line number Diff line change
Expand Up @@ -1430,7 +1430,7 @@
},
"bullet3": {
"baseline": "3.25",
"port-version": 2
"port-version": 3
},
"bustache": {
"baseline": "1.1.0",
Expand Down

0 comments on commit f54003d

Please sign in to comment.