mirror of
https://github.com/CHN-beta/nixpkgs.git
synced 2026-01-12 02:40:31 +08:00
box2d: 2.4.2 -> 3.1.0
Diff: https://github.com/erincatto/box2d/compare/v2.4.2...v3.1.0 Changelog: https://box2d.org/documentation/md_release__notes__v310.html
This commit is contained in:
16
pkgs/by-name/bo/box2d/cmake_dont_fetch_enkits.patch
Normal file
16
pkgs/by-name/bo/box2d/cmake_dont_fetch_enkits.patch
Normal file
@@ -0,0 +1,16 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 8c1390e..791d3b7 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -83,10 +83,7 @@ if(PROJECT_IS_TOP_LEVEL)
|
||||
# Used in tests and samples
|
||||
FetchContent_Declare(
|
||||
enkits
|
||||
- GIT_REPOSITORY https://github.com/dougbinks/enkiTS.git
|
||||
- GIT_TAG master
|
||||
- GIT_SHALLOW TRUE
|
||||
- GIT_PROGRESS TRUE
|
||||
+ URL @enkits_src@
|
||||
)
|
||||
FetchContent_MakeAvailable(enkits)
|
||||
endif()
|
||||
54
pkgs/by-name/bo/box2d/cmake_use_system_glfw_and_imgui.patch
Normal file
54
pkgs/by-name/bo/box2d/cmake_use_system_glfw_and_imgui.patch
Normal file
@@ -0,0 +1,54 @@
|
||||
diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt
|
||||
index 5020345..97af8c6 100644
|
||||
--- a/samples/CMakeLists.txt
|
||||
+++ b/samples/CMakeLists.txt
|
||||
@@ -17,47 +17,12 @@ set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "GLFW Examples")
|
||||
set(GLFW_BUILD_TESTS OFF CACHE BOOL "GLFW Tests")
|
||||
set(GLFW_INSTALL OFF CACHE BOOL "GLFW Install")
|
||||
|
||||
-FetchContent_Declare(
|
||||
- glfw
|
||||
- GIT_REPOSITORY https://github.com/glfw/glfw.git
|
||||
- GIT_TAG 3.4
|
||||
- GIT_SHALLOW TRUE
|
||||
- GIT_PROGRESS TRUE
|
||||
-)
|
||||
-FetchContent_MakeAvailable(glfw)
|
||||
+find_package(glfw)
|
||||
|
||||
# imgui and glfw backend for GUI
|
||||
# https://gist.github.com/jeffamstutz/992723dfabac4e3ffff265eb71a24cd9
|
||||
# Modified to pin to a specific imgui release
|
||||
-FetchContent_Populate(imgui
|
||||
- URL https://github.com/ocornut/imgui/archive/refs/tags/v1.91.3.zip
|
||||
- SOURCE_DIR ${CMAKE_SOURCE_DIR}/build/imgui
|
||||
-)
|
||||
-
|
||||
-set(IMGUI_DIR ${CMAKE_SOURCE_DIR}/build/imgui)
|
||||
-
|
||||
-add_library(imgui STATIC
|
||||
- ${IMGUI_DIR}/imconfig.h
|
||||
- ${IMGUI_DIR}/imgui.h
|
||||
-
|
||||
- ${IMGUI_DIR}/imgui.cpp
|
||||
- ${IMGUI_DIR}/imgui_draw.cpp
|
||||
- ${IMGUI_DIR}/imgui_demo.cpp
|
||||
- ${IMGUI_DIR}/imgui_tables.cpp
|
||||
- ${IMGUI_DIR}/imgui_widgets.cpp
|
||||
-
|
||||
- ${IMGUI_DIR}/backends/imgui_impl_glfw.cpp
|
||||
- ${IMGUI_DIR}/backends/imgui_impl_opengl3.cpp
|
||||
-)
|
||||
-
|
||||
-target_link_libraries(imgui PUBLIC glfw glad)
|
||||
-target_include_directories(imgui PUBLIC ${IMGUI_DIR} ${IMGUI_DIR}/backends)
|
||||
-target_compile_definitions(imgui PUBLIC IMGUI_DISABLE_OBSOLETE_FUNCTIONS)
|
||||
-set_target_properties(imgui PROPERTIES
|
||||
- CXX_STANDARD 20
|
||||
- CXX_STANDARD_REQUIRED YES
|
||||
- CXX_EXTENSIONS NO
|
||||
-)
|
||||
+find_package(imgui)
|
||||
|
||||
# jsmn for json
|
||||
set(JSMN_DIR ${CMAKE_SOURCE_DIR}/extern/jsmn)
|
||||
@@ -2,42 +2,76 @@
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
|
||||
substituteAll,
|
||||
|
||||
# nativeBuildInputs
|
||||
cmake,
|
||||
pkg-config,
|
||||
|
||||
# buildInputs
|
||||
glfw3,
|
||||
imgui,
|
||||
libGLU,
|
||||
libGL,
|
||||
libglut,
|
||||
libX11,
|
||||
libXcursor,
|
||||
libXi,
|
||||
libXinerama,
|
||||
libXrandr,
|
||||
libglut,
|
||||
xorgproto,
|
||||
libXi,
|
||||
pkg-config,
|
||||
settingsFile ? "include/box2d/b2_settings.h",
|
||||
|
||||
nix-update-script,
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (lib) cmakeBool optionals;
|
||||
inherit (lib) cmakeBool;
|
||||
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "box2d";
|
||||
version = "2.4.2";
|
||||
version = "3.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "erincatto";
|
||||
repo = "box2d";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-yvhpgiZpjTPeSY7Ma1bh4LwIokUUKB10v2WHlamL9D8=";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-QTSU1+9x8GoUK3hlTDMh43fc4vbNfFR7syt6xVHIuPs=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# prevent CMake from trying to download some libraries from the internet
|
||||
(substituteAll {
|
||||
src = ./cmake_dont_fetch_enkits.patch;
|
||||
enkits_src = fetchFromGitHub {
|
||||
owner = "dougbinks";
|
||||
repo = "enkiTS";
|
||||
rev = "686d0ec31829e0d9e5edf9ceb68c40f9b9b20ea9";
|
||||
hash = "sha256-CerLj/WY+J3mrMvv7dGmZltjAM9v5C/IY4X+Ph78HVs=";
|
||||
};
|
||||
})
|
||||
./cmake_use_system_glfw_and_imgui.patch
|
||||
];
|
||||
|
||||
env.NIX_CFLAGS_COMPILE = toString (
|
||||
lib.optionals stdenv.cc.isGNU [
|
||||
# error: '*(float *)((char *)&localPointA + offsetof(b2Vec2, y))' may be used uninitialized
|
||||
"-Wno-error=maybe-uninitialized"
|
||||
]
|
||||
);
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
libGL
|
||||
glfw3
|
||||
(imgui.override {
|
||||
# GLFW backend is disabled by default on darwin but box2d imports it unconditionally
|
||||
# https://github.com/erincatto/box2d/blob/v3.1.0/samples/main.cpp#L28
|
||||
IMGUI_BUILD_GLFW_BINDING = true;
|
||||
})
|
||||
libGLU
|
||||
libX11
|
||||
libXcursor
|
||||
@@ -52,19 +86,16 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
(cmakeBool "BOX2D_BUILD_UNIT_TESTS" finalAttrs.finalPackage.doCheck)
|
||||
];
|
||||
|
||||
prePatch = ''
|
||||
substituteInPlace ${settingsFile} \
|
||||
--replace-fail 'b2_maxPolygonVertices 8' 'b2_maxPolygonVertices 15'
|
||||
'';
|
||||
passthru = {
|
||||
updateScript = nix-update-script { };
|
||||
};
|
||||
|
||||
# tests are broken on 2.4.2 and 2.3.x doesn't have tests: https://github.com/erincatto/box2d/issues/677
|
||||
doCheck = lib.versionAtLeast finalAttrs.version "2.4.2";
|
||||
|
||||
meta = with lib; {
|
||||
meta = {
|
||||
description = "2D physics engine";
|
||||
homepage = "https://box2d.org/";
|
||||
maintainers = with maintainers; [ raskin ];
|
||||
platforms = platforms.unix;
|
||||
license = licenses.zlib;
|
||||
changelog = "https://github.com/erincatto/box2d/releases/tag/v${finalAttrs.version}";
|
||||
maintainers = with lib.maintainers; [ raskin ];
|
||||
platforms = lib.platforms.unix;
|
||||
license = lib.licenses.zlib;
|
||||
};
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user