gnu: Add freesolid.

* gnu/packages/game-development.scm (freesolid): New variable.
* gnu/packages/patches/freesolid-configure.patch: New file.
* gnu/packages/patches/freesolid-pkgconfig.patch: Likewise.
* gnu/packages/patches/freesolid-automake.patch: Likewise.
* gnu/packages/patches/freesolid-autotools.patch: Likewise.
* gnu/local.mk (dist_patch_DATA): Register them.

Change-Id: I557332031a30d944f451d0a62c763e5b41c4e29b
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
This commit is contained in:
Maxim Cournoyer 2024-10-28 15:26:06 +09:00 committed by Liliana Marie Prikler
parent 1592f1ac3b
commit 27751a4e76
No known key found for this signature in database
GPG key ID: 442A84B8C70E2F87
6 changed files with 271 additions and 0 deletions

View file

@ -1294,6 +1294,10 @@ dist_patch_DATA = \
%D%/packages/patches/freeimage-unbundle.patch \ %D%/packages/patches/freeimage-unbundle.patch \
%D%/packages/patches/freeimage-CVE-2020-21428.patch \ %D%/packages/patches/freeimage-CVE-2020-21428.patch \
%D%/packages/patches/freeimage-CVE-2020-22524.patch \ %D%/packages/patches/freeimage-CVE-2020-22524.patch \
%D%/packages/patches/freesolid-automake.patch \
%D%/packages/patches/freesolid-autotools.patch \
%D%/packages/patches/freesolid-configure.patch \
%D%/packages/patches/freesolid-pkgconfig.patch \
%D%/packages/patches/fulcrum-1.9.1-unbundled-libraries.patch \ %D%/packages/patches/fulcrum-1.9.1-unbundled-libraries.patch \
%D%/packages/patches/fuse-glibc-2.34.patch \ %D%/packages/patches/fuse-glibc-2.34.patch \
%D%/packages/patches/fuse-overlapping-headers.patch \ %D%/packages/patches/fuse-overlapping-headers.patch \

View file

@ -30,6 +30,7 @@
;;; Copyright © 2022 dan <i@dan.games> ;;; Copyright © 2022 dan <i@dan.games>
;;; Copyright © 2023, 2024 John Kehayias <john.kehayias@protonmail.com> ;;; Copyright © 2023, 2024 John Kehayias <john.kehayias@protonmail.com>
;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr> ;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;; Copyright © 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -2780,6 +2781,35 @@ specific knowledge of the hardware they are targeting.")
double-buffering.") double-buffering.")
(license license:gpl2+))) (license license:gpl2+)))
(define-public freesolid
(package
(name "freesolid")
(version "2.1.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/" name "/FreeSOLID-"
version ".zip"))
(sha256
(base32
"0wxqiv1ba227kwxpgwf6in9ai1lcamhmp1ib1c1chq4xvnpwdvc9"))
(patches (search-patches "freesolid-autotools.patch"
"freesolid-pkgconfig.patch"
"freesolid-configure.patch"
"freesolid-automake.patch"))))
(build-system gnu-build-system)
(arguments (list #:phases #~(modify-phases %standard-phases
(add-after 'unpack 'force-reboostrap
(lambda _
(delete-file "bootstrap.sh")
(delete-file "configure"))))))
(native-inputs (list autoconf automake libtool unzip))
(home-page "https://sourceforge.net/projects/freesolid/")
(synopsis "3D collision detection C++ library")
(description "FreeSOLID is a library for collision detection of
three-dimensional objects undergoing rigid motion and deformation. FreeSOLID
is designed to be used in interactive 3D graphics applications.")
(license license:lgpl2.0+)))
(define-public libccd (define-public libccd
(package (package
(name "libccd") (name "libccd")

View file

@ -0,0 +1,60 @@
FreeSOLID-2.1.1-Makefile.am-update.patch
From: Alec Leamas <alec@tests.notat.diaspora.com>
This patch causes a few extra header files to be installed; they are used by
Speed-Dreams for example.
Source: https://src.fedoraproject.org/rpms/FreeSOLID/raw/rawhide/f/FreeSOLID-2.1.1-Makefile.am-update.patch
Rebased on top of 2.1.2 by Maxim Cournoyer
Upstream-status: https://sourceforge.net/p/freesolid/patches/11/
---
Makefile.am | 20 ++++++++++++++++++--
libsolid/Makefile.am | 2 +-
2 files changed, 19 insertions(+), 3 deletions(-)
--- a/Makefile.am 2024-10-28 15:17:22.787773430 +0900
+++ b/Makefile.am 2024-10-28 15:19:02.367752961 +0900
@@ -1,8 +1,24 @@
ACLOCAL_AMFLAGS = -I m4
SUBDIRS = libmoto libbroad libsolid sample doc
-EXTRA_DIST = include
+EXTRA_DIST = FreeSOLID.pc.in
bin_SCRIPTS = freesolid-config
pkgconfigdir = $(libdir)/pkgconfig
-dist_pkgconfig_DATA = FreeSOLID.pc
+nodist_pkgconfig_DATA = FreeSOLID.pc
+
+FreeSOLID_3Ddir = $(includedir)/FreeSOLID/3D
+FreeSOLID_3D_HEADERS =
+FreeSOLID_3D_HEADERS += include/3D/Basic.h
+FreeSOLID_3D_HEADERS += include/3D/Matrix.h
+FreeSOLID_3D_HEADERS += include/3D/Point.h
+FreeSOLID_3D_HEADERS += include/3D/Quaternion.h
+FreeSOLID_3D_HEADERS += include/3D/Tuple3.h
+FreeSOLID_3D_HEADERS += include/3D/Tuple4.h
+FreeSOLID_3D_HEADERS += include/3D/Vector.h
+
+FreeSOLID_SOLIDdir = $(includedir)/FreeSOLID/SOLID
+FreeSOLID_SOLID_HEADERS =
+FreeSOLID_SOLID_HEADERS += include/SOLID/solid.h
+FreeSOLID_SOLID_HEADERS += include/SOLID/broad.h
+FreeSOLID_SOLID_HEADERS += include/SOLID/types.h
diff --git a/libsolid/Makefile.am b/libsolid/Makefile.am
index f722be3..623b2e8 100644
--- a/libsolid/Makefile.am
+++ b/libsolid/Makefile.am
@@ -21,7 +21,7 @@ libFreeSOLID_la_SOURCES = \
../libmoto/MT_Vector4.cpp
-libFreeSOLID_la_LDFLAGS = -no-undefined -version-info @FREESOLID_CURRENT@:@FREESOLID_REVISION@:@FREESOLID_AGE@ -release @VERSION@
+libFreeSOLID_la_LDFLAGS = -no-undefined -version-info @FREESOLID_CURRENT@:@FREESOLID_REVISION@:@FREESOLID_AGE@
AM_CPPFLAGS = @CPPFLAGS@
LIBS = @QHULL_LIBS@ -lm

View file

@ -0,0 +1,73 @@
Upstream-status: https://sourceforge.net/p/freesolid/patches/1/
Resolve Autoconf warnings.
diff --git a/Makefile.am b/Makefile.am
index 4914f44..77b157a 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,4 +1,5 @@
+ACLOCAL_AMFLAGS = -I m4
SUBDIRS = libmoto libbroad libsolid sample doc
EXTRA_DIST = include
-bin_SCRIPTS = freesolid-config
\ No newline at end of file
+bin_SCRIPTS = freesolid-config
diff --git a/configure.in b/configure.in
index 7d61ba5..41a761c 100644
--- a/configure.in
+++ b/configure.in
@@ -1,5 +1,6 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT(sample/sample.cpp)
+AC_CONFIG_MACRO_DIR([m4])
AC_CANONICAL_SYSTEM
PACKAGE=FreeSOLID
@@ -22,17 +23,14 @@ AC_PROG_CXX
AC_PROG_CC
AC_PROG_CPP
AC_PROG_INSTALL
-AC_PROG_RANLIB
AC_PROG_LIBTOOL
CPPFLAGS="$CPPFLAGS -I../include -I./include -I. -I../libbroad -I../libmoto"
AC_SUBST(CPPFLAGS)
dnl Checks for libraries.
-dnl Replace `main' with a function in -lm:
-AC_CHECK_LIB(m, main)
-dnl Replace `main' with a function in -lqhull:
-AC_CHECK_LIB(qhull, main, s_have_qhull=yes)
+AC_CHECK_LIB(m, ceil)
+AC_CHECK_LIB(qhull, qh_initbuild, s_have_qhull=yes)
if test "X${s_have_qhull}" = Xyes; then
QHULL_LIBS="-lqhull"
diff --git a/libsolid/Makefile.am b/libsolid/Makefile.am
index cc295c7..f722be3 100644
--- a/libsolid/Makefile.am
+++ b/libsolid/Makefile.am
@@ -23,7 +23,7 @@ libFreeSOLID_la_SOURCES = \
libFreeSOLID_la_LDFLAGS = -no-undefined -version-info @FREESOLID_CURRENT@:@FREESOLID_REVISION@:@FREESOLID_AGE@ -release @VERSION@
-CPPFLAGS = @CPPFLAGS@
+AM_CPPFLAGS = @CPPFLAGS@
LIBS = @QHULL_LIBS@ -lm
pkginclude_HEADERS = \
diff --git a/sample/Makefile.am b/sample/Makefile.am
index 5559fb0..eaa705f 100644
--- a/sample/Makefile.am
+++ b/sample/Makefile.am
@@ -4,7 +4,7 @@ sample_SOURCES = sample.cpp
x_wing_SOURCES = x_wing.cpp
teapot_SOURCES = teapot.cpp
-CPPFLAGS = @CPPFLAGS@
+AM_CPPFLAGS = @CPPFLAGS@
LDADD = ../libsolid/libFreeSOLID.la

View file

@ -0,0 +1,58 @@
Fixes an incompatibility with Libtool 2+.
Rebased on FreeSOLID-2.1.2.
Originally retrieved from Fedora (see:
https://src.fedoraproject.org/rpms/FreeSOLID/raw/rawhide/f/FreeSOLID-2.1.1-configure.patch).
Upstream-status: https://sourceforge.net/p/freesolid/patches/10/
--- FreeSOLID-2.1.1/configure.in.orig 2012-05-24 20:58:30.000000000 +0200
+++ FreeSOLID-2.1.1/configure.in 2012-05-24 21:08:00.932445488 +0200
@@ -1,8 +1,11 @@
dnl Process this file with autoconf to produce a configure script.
-AC_INIT(sample/sample.cpp)
+AC_INIT
AC_CONFIG_MACRO_DIR([m4])
+AC_CONFIG_SRCDIR([sample/sample.cpp])
-AC_CANONICAL_SYSTEM
+AC_CONFIG_MACRO_DIR([m4])
+
+AC_CANONICAL_TARGET
PACKAGE=FreeSOLID
VERSION=2.1.1
FREESOLID_CURRENT=2
@@ -15,15 +18,14 @@
AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
-AM_CONFIG_HEADER(include/config.h)
+AC_CONFIG_HEADERS([include/config.h])
dnl Checks for programs.
-AC_LIBTOOL_WIN32_DLL
AC_PROG_CXX
AC_PROG_CC
AC_PROG_CPP
AC_PROG_INSTALL
-AC_PROG_LIBTOOL
+LT_INIT([win32-dll])
CPPFLAGS="$CPPFLAGS -I../include -I./include -I. -I../libbroad -I../libmoto"
AC_SUBST(CPPFLAGS)
@@ -52,11 +54,6 @@
AC_CHECK_FUNCS(sqrt)
AC_CHECK_FUNCS(fabs)
-AC_OUTPUT([ doc/Makefile
- sample/Makefile
- Makefile
- libbroad/Makefile
- libmoto/Makefile
- libsolid/Makefile
- freesolid-config
- FreeSOLID.pc])
+AC_CONFIG_FILES([doc/Makefile sample/Makefile Makefile libbroad/Makefile libmoto/Makefile libsolid/Makefile freesolid-config])
+AC_CONFIG_FILES([FreeSOLID.pc])
+AC_OUTPUT

View file

@ -0,0 +1,46 @@
Upstream-status: https://sourceforge.net/p/freesolid/patches/5/
diff --git a/FreeSOLID.pc.in b/FreeSOLID.pc.in
new file mode 100644
index 0000000..c354f05
--- /dev/null
+++ b/FreeSOLID.pc.in
@@ -0,0 +1,12 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: FreeSolid
+Description: 3D collision detection C++ library
+Version: @VERSION@
+
+Libs: -L${libdir} -lFreeSOLID @QHULL_LIBS@
+Cflags: -I${includedir} -I${includedir}/FreeSOLID
+
diff --git a/configure.in b/configure.in
index 41a761c..a4bc7d4 100644
--- a/configure.in
+++ b/configure.in
@@ -52,4 +52,11 @@ dnl Checks for library functions.
AC_CHECK_FUNCS(sqrt)
AC_CHECK_FUNCS(fabs)
-AC_OUTPUT(doc/Makefile sample/Makefile Makefile libbroad/Makefile libmoto/Makefile libsolid/Makefile freesolid-config)
+AC_OUTPUT([ doc/Makefile
+ sample/Makefile
+ Makefile
+ libbroad/Makefile
+ libmoto/Makefile
+ libsolid/Makefile
+ freesolid-config
+ FreeSOLID.pc])
--- a/Makefile.am 2024-10-28 10:49:24.006849578 +0900
+++ b/Makefile.am 2024-10-28 10:50:13.378839511 +0900
@@ -3,3 +3,6 @@
EXTRA_DIST = include
bin_SCRIPTS = freesolid-config
+
+pkgconfigdir = $(libdir)/pkgconfig
+dist_pkgconfig_DATA = FreeSOLID.pc