From b5f167222cf4deaa75030bbb71cf7c96f5e06bfe Mon Sep 17 00:00:00 2001 From: ricardoofnl Date: Fri, 3 Jul 2026 07:33:50 +0700 Subject: [PATCH] [box3d] add new port (#52700) --- ports/box3d/msvc-runtime.diff | 13 ++++++++++ ports/box3d/portfile.cmake | 40 ++++++++++++++++++++++++++++++ ports/box3d/vcpkg.json | 18 ++++++++++++++ ports/box3d/x86-msvc-popcount.diff | 17 +++++++++++++ versions/b-/box3d.json | 9 +++++++ versions/baseline.json | 4 +++ 6 files changed, 101 insertions(+) create mode 100644 ports/box3d/msvc-runtime.diff create mode 100644 ports/box3d/portfile.cmake create mode 100644 ports/box3d/vcpkg.json create mode 100644 ports/box3d/x86-msvc-popcount.diff create mode 100644 versions/b-/box3d.json diff --git a/ports/box3d/msvc-runtime.diff b/ports/box3d/msvc-runtime.diff new file mode 100644 index 0000000000..6dbad5a2c4 --- /dev/null +++ b/ports/box3d/msvc-runtime.diff @@ -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$<$:Debug>") + + if (MSVC OR APPLE OR UNIX) + option(BOX3D_SANITIZE "Enable sanitizers for some builds" OFF) diff --git a/ports/box3d/portfile.cmake b/ports/box3d/portfile.cmake new file mode 100644 index 0000000000..bee31c97c4 --- /dev/null +++ b/ports/box3d/portfile.cmake @@ -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") diff --git a/ports/box3d/vcpkg.json b/ports/box3d/vcpkg.json new file mode 100644 index 0000000000..e5682b61eb --- /dev/null +++ b/ports/box3d/vcpkg.json @@ -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 + } + ] +} diff --git a/ports/box3d/x86-msvc-popcount.diff b/ports/box3d/x86-msvc-popcount.diff new file mode 100644 index 0000000000..1452ad58a9 --- /dev/null +++ b/ports/box3d/x86-msvc-popcount.diff @@ -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 diff --git a/versions/b-/box3d.json b/versions/b-/box3d.json new file mode 100644 index 0000000000..879ce4d0c9 --- /dev/null +++ b/versions/b-/box3d.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "a9c129249164e17d4ba0e69ec8c0d7272a3e7040", + "version-semver": "0.1.0", + "port-version": 0 + } + ] +} diff --git a/versions/baseline.json b/versions/baseline.json index 924fcb92c2..71354bbb01 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -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