[box3d] add new port (#52700)

This commit is contained in:
ricardoofnl 2026-07-03 07:33:50 +07:00 committed by GitHub
parent 572892cc19
commit b5f167222c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 101 additions and 0 deletions

View File

@ -0,0 +1,13 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6360666..09a3dad 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -24,8 +24,6 @@ message(STATUS "CMake C++ compiler: ${CMAKE_CXX_COMPILER_ID}")
message(STATUS "CMake system name: ${CMAKE_SYSTEM_NAME}")
message(STATUS "CMake host system processor: ${CMAKE_HOST_SYSTEM_PROCESSOR}")
-# static link to make leak checking easier (_crtBreakAlloc)
-set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
if (MSVC OR APPLE OR UNIX)
option(BOX3D_SANITIZE "Enable sanitizers for some builds" OFF)

View File

@ -0,0 +1,40 @@
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO erincatto/box3d
REF v${VERSION}
SHA512 92eaa76bb0e309d10ae2f408183487e5c55eeff71428ae1a0d1b814d892ac532aca10069414c4b0ef998a754f0bf420a41838c94d70073485f6f9260371aa737
HEAD_REF main
PATCHES
msvc-runtime.diff
x86-msvc-popcount.diff
)
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm")
# Upstream's NEON path uses AArch64-only intrinsics (vdivq_f32, vsqrtq_f32)
list(APPEND OPTIONS -DBOX3D_DISABLE_SIMD=ON)
endif()
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS
${OPTIONS}
-DBOX3D_SAMPLES=OFF
-DBOX3D_BENCHMARKS=OFF
-DBOX3D_DOCS=OFF
-DBOX3D_PROFILE=OFF
-DBOX3D_VALIDATE=OFF
-DBOX3D_UNIT_TESTS=OFF
-DBOX3D_COMPILE_WARNING_AS_ERROR=OFF
)
vcpkg_cmake_install()
vcpkg_copy_pdbs()
vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/box3d)
if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/box3d/base.h" "defined(BOX3D_DLL)" "1")
endif()
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")

18
ports/box3d/vcpkg.json Normal file
View File

@ -0,0 +1,18 @@
{
"name": "box3d",
"version-semver": "0.1.0",
"description": "A 3D physics engine for games",
"homepage": "https://github.com/erincatto/box3d",
"license": "MIT",
"supports": "!uwp",
"dependencies": [
{
"name": "vcpkg-cmake",
"host": true
},
{
"name": "vcpkg-cmake-config",
"host": true
}
]
}

View File

@ -0,0 +1,17 @@
diff --git a/src/ctz.h b/src/ctz.h
index 483ce4b..b592afb 100644
--- a/src/ctz.h
+++ b/src/ctz.h
@@ -72,7 +72,12 @@ static inline uint32_t b3CTZ64( uint64_t block )
static inline int b3PopCount64( uint64_t block )
{
+#ifdef _WIN64
return (int)__popcnt64( block );
+#else
+ // 32-bit fall back
+ return (int)( __popcnt( (uint32_t)block ) + __popcnt( (uint32_t)( block >> 32 ) ) );
+#endif
}
#else

9
versions/b-/box3d.json Normal file
View File

@ -0,0 +1,9 @@
{
"versions": [
{
"git-tree": "a9c129249164e17d4ba0e69ec8c0d7272a3e7040",
"version-semver": "0.1.0",
"port-version": 0
}
]
}

View File

@ -1472,6 +1472,10 @@
"baseline": "3.1.1",
"port-version": 0
},
"box3d": {
"baseline": "0.1.0",
"port-version": 0
},
"braft": {
"baseline": "2021-26-04",
"port-version": 7