Procházet zdrojové kódy

Auto-update box2d to v3.1.0 (#7035)

* Update box2d to v3.1.0

* fix werror

* add patch

---------

Co-authored-by: star9029 <[email protected]>
ruki před 3 měsíci
rodič
revize
a87516a016

+ 94 - 0
packages/b/box2d/patches/3.1.0/cmake.patch

@@ -0,0 +1,94 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index e0f12eb1e..b4b62d3c0 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -73,7 +73,8 @@ if(PROJECT_IS_TOP_LEVEL)
+ 	option(BOX2D_PROFILE "Enable profiling with Tracy" OFF)
+ 	option(BOX2D_VALIDATE "Enable heavy validation" ON)
+ 	option(BOX2D_UNIT_TESTS "Build the Box2D unit tests" ON)
+-
++	option(BOX2D_COMPILE_WARNING_AS_ERROR "Compile warnings as errors" OFF)
++	
+ 	if(MSVC AND WIN32)
+ 		# add_compile_options(/fsanitize=address)
+ 		# set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/GS- /Gy /O2 /Oi /Ot")
+diff --git a/shared/CMakeLists.txt b/shared/CMakeLists.txt
+index 9a9e98082..f0c050116 100644
+--- a/shared/CMakeLists.txt
++++ b/shared/CMakeLists.txt
+@@ -17,6 +17,10 @@ set_target_properties(shared PROPERTIES
+ 	C_STANDARD 17
+ )
+ 
++if (BOX2D_COMPILE_WARNING_AS_ERROR)
++	set_target_properties(shared PROPERTIES COMPILE_WARNING_AS_ERROR ON)
++endif()
++
+ target_include_directories(shared PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
+ target_link_libraries(shared PRIVATE box2d)
+ 
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 5e08afae0..dbc41b129 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -92,12 +92,15 @@ set_target_properties(box2d PROPERTIES
+ 	C_STANDARD 17
+     C_STANDARD_REQUIRED YES
+     C_EXTENSIONS YES
+-	COMPILE_WARNING_AS_ERROR ON
+     VERSION ${PROJECT_VERSION}
+     SOVERSION ${PROJECT_VERSION_MAJOR}
+ 	DEBUG_POSTFIX ${CMAKE_DEBUG_POSTFIX}
+ )
+ 
++if (BOX2D_COMPILE_WARNING_AS_ERROR)
++	set_target_properties(box2d PROPERTIES COMPILE_WARNING_AS_ERROR ON)
++endif()
++
+ if (BOX2D_PROFILE)
+ 	target_compile_definitions(box2d PRIVATE BOX2D_PROFILE)
+ 
+@@ -160,15 +163,15 @@ elseif (MINGW)
+ 	endif()
+ elseif (APPLE)
+ 	message(STATUS "Box2D on Apple")
+-	target_compile_options(box2d PRIVATE -Wmissing-prototypes -Wall -Wextra -pedantic -Werror)
++	target_compile_options(box2d PRIVATE -Wmissing-prototypes -Wall -Wextra -pedantic)
+ elseif (EMSCRIPTEN)
+ 	message(STATUS "Box2D on Emscripten")
+-	if (BOX2D_DISABLE_SIMD OFF)
++	if (NOT BOX2D_DISABLE_SIMD)
+ 		target_compile_options(box2d PRIVATE -msimd128 -msse2)
+ 	endif()
+ elseif (UNIX)
+ 	message(STATUS "Box2D using Unix")
+-	target_compile_options(box2d PRIVATE -Wmissing-prototypes -Wall -Wextra -pedantic -Werror -Wno-unused-value)
++	target_compile_options(box2d PRIVATE -Wmissing-prototypes -Wall -Wextra -pedantic -Wno-unused-value)
+ 	if ("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "aarch64")
+ 		# raspberry pi
+ 		# -mfpu=neon
+diff --git a/src/distance.c b/src/distance.c
+index 415ca80c2..1e1e5341c 100644
+--- a/src/distance.c
++++ b/src/distance.c
+@@ -218,10 +218,6 @@ static void b2ComputeSimplexWitnessPoints( b2Vec2* a, b2Vec2* b, const b2Simplex
+ {
+ 	switch ( s->count )
+ 	{
+-		case 0:
+-			B2_ASSERT( false );
+-			break;
+-
+ 		case 1:
+ 			*a = s->v1.wA;
+ 			*b = s->v1.wB;
+@@ -240,6 +236,8 @@ static void b2ComputeSimplexWitnessPoints( b2Vec2* a, b2Vec2* b, const b2Simplex
+ 			break;
+ 
+ 		default:
++			*a = b2Vec2_zero;
++			*b = b2Vec2_zero;
+ 			B2_ASSERT( false );
+ 			break;
+ 	}
+ 

+ 3 - 0
packages/b/box2d/xmake.lua

@@ -6,9 +6,12 @@ package("box2d")
     set_urls("https://github.com/erincatto/box2d/archive/refs/tags/$(version).tar.gz",
              "https://github.com/erincatto/box2d.git")
 
+    add_versions("v3.1.0", "7fac19801485efb31ee3745b2284d9d4601f9e8138a3383a7b0df6d788ea5785")
     add_versions("v3.0.0", "64ad759006cd2377c99367f51fb36942b57f0e9ad690ed41548dd620e6f6c8b1")
     add_versions("v2.4.2", "85b9b104d256c985e6e244b4227d447897fac429071cc114e5cc819dae848852")
 
+    add_patches("3.1.0", "patches/3.1.0/cmake.patch", "22200ef3af453ef3a81735ad3700249110e3f26a7a68d712dbb3ad96309ce02b")
+
     add_configs("avx2", {description = "Enable AVX2.", default = false, type = "boolean"})
 
     if is_plat("linux", "bsd") then