git: c8200812c000 - main - games/emptyepsilon: Fix build

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Fri, 05 Dec 2025 20:49:18 UTC
The branch main has been updated by yuri:

URL: https://cgit.FreeBSD.org/ports/commit/?id=c8200812c000e298a635a0b9bc7bc2c419e80559

commit c8200812c000e298a635a0b9bc7bc2c419e80559
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2025-12-05 20:46:33 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2025-12-05 20:49:12 +0000

    games/emptyepsilon: Fix build
    
    ... by using glm submodule.
    
    Reported by:    fallout
---
 games/emptyepsilon/Makefile                        | 12 ++++++--
 games/emptyepsilon/distinfo                        |  4 ++-
 .../files/patch-sproton_CMakeLists.txt             | 18 +++++++++++
 ...ch-sproton_libs_basis__universal_CMakeLists.txt | 36 +++++++++++++++++++---
 4 files changed, 61 insertions(+), 9 deletions(-)

diff --git a/games/emptyepsilon/Makefile b/games/emptyepsilon/Makefile
index ea34d034715a..2a6462418750 100644
--- a/games/emptyepsilon/Makefile
+++ b/games/emptyepsilon/Makefile
@@ -16,7 +16,11 @@ LICENSE_FILE_GPLv2=				${WRKSRC}/LICENSE
 LICENSE_FILE_AngryFly-Royalty-Free-License=	${WRKSRC}/packs/License.txt
 LICENSE_PERMS_AngryFly-Royalty-Free-License=	auto-accept dist-mirror pkg-mirror
 
-BUILD_DEPENDS=	glm>0:math/glm
+# BUILD_DEPENDS for glm is commented out because the system glm (1.0.x) is
+# incompatible with EmptyEpsilon's code. The bundled glm 0.9.9.8 is used instead
+# via git submodule to avoid API incompatibilities (missing radians, degrees,
+# u8vec4, vec3 functions/types in newer glm versions).
+#BUILD_DEPENDS=	glm>0:math/glm
 LIB_DEPENDS=	libfreetype.so:print/freetype2 \
 		libsfml-system.so:devel/sfml \
 		libmeshoptimizer.so:misc/meshoptimizer \
@@ -30,10 +34,12 @@ USE_GITHUB=	yes
 GH_ACCOUNT=	daid
 GH_PROJECT=	EmptyEpsilon
 GH_TUPLE=	daid:SeriousProton:${DISTVERSIONFULL}:sproton/sproton \
-		BinomialLLC:basis_universal:v1_15_update2:basis/SeriousProton/externals/basis
+		BinomialLLC:basis_universal:v1_15_update2:basis/SeriousProton/externals/basis \
+		g-truc:glm:0.9.9.8:glm/sproton/libs/glm
 
 CMAKE_ARGS=	-DSERIOUS_PROTON_DIR="${WRKSRC}/sproton" \
-		-DWITH_OPUS=system
+		-DWITH_OPUS=system \
+		-DWITH_GLM=bundled
 CXXFLAGS+=	-DGLM_ENABLE_EXPERIMENTAL
 
 post-patch:
diff --git a/games/emptyepsilon/distinfo b/games/emptyepsilon/distinfo
index 706e55a5134b..d6c7e2a4f166 100644
--- a/games/emptyepsilon/distinfo
+++ b/games/emptyepsilon/distinfo
@@ -1,7 +1,9 @@
-TIMESTAMP = 1733775767
+TIMESTAMP = 1764964262
 SHA256 (daid-EmptyEpsilon-EE-2024.12.08_GH0.tar.gz) = 8be5360270b9a616a5d749aec9653b3e36beba96b2d6b1651e18594a3314f010
 SIZE (daid-EmptyEpsilon-EE-2024.12.08_GH0.tar.gz) = 261708187
 SHA256 (daid-SeriousProton-EE-2024.12.08_GH0.tar.gz) = fa4a9873c5f8872f9f2d75d03eec06c8a40ea2e0daeb977f0445f14c1e76a236
 SIZE (daid-SeriousProton-EE-2024.12.08_GH0.tar.gz) = 2648907
 SHA256 (BinomialLLC-basis_universal-v1_15_update2_GH0.tar.gz) = 3caff917d63ed0255fc56bcdf80d305bb47ac9315a4a45409a1264a0e5e0e572
 SIZE (BinomialLLC-basis_universal-v1_15_update2_GH0.tar.gz) = 13283133
+SHA256 (g-truc-glm-0.9.9.8_GH0.tar.gz) = 7d508ab72cb5d43227a3711420f06ff99b0a0cb63ee2f93631b162bfe1fe9592
+SIZE (g-truc-glm-0.9.9.8_GH0.tar.gz) = 4368032
diff --git a/games/emptyepsilon/files/patch-sproton_CMakeLists.txt b/games/emptyepsilon/files/patch-sproton_CMakeLists.txt
new file mode 100644
index 000000000000..75f204e5320f
--- /dev/null
+++ b/games/emptyepsilon/files/patch-sproton_CMakeLists.txt
@@ -0,0 +1,18 @@
+- Use bundled glm from libs/glm when WITH_GLM=bundled
+- Avoids FetchContent for glm since we provide it via GH_TUPLE for compatibility
+
+--- sproton/CMakeLists.txt.orig	2024-11-06 08:14:52 UTC
++++ sproton/CMakeLists.txt
+@@ -48,6 +48,12 @@ if(NOT WITH_GLM STREQUAL "bundled")
+     find_package(glm ${glm_find_args})
+ endif()
+ 
++# Check if glm is already provided in libs/glm (via ports GH_TUPLE)
++if(NOT glm_FOUND AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/libs/glm/CMakeLists.txt")
++    add_subdirectory(libs/glm EXCLUDE_FROM_ALL)
++    set(glm_FOUND TRUE)
++endif()
++
+ if(glm_FOUND)
+     message(STATUS "GLM version used: SYSTEM")
+     if(NOT TARGET glm::glm)
diff --git a/games/emptyepsilon/files/patch-sproton_libs_basis__universal_CMakeLists.txt b/games/emptyepsilon/files/patch-sproton_libs_basis__universal_CMakeLists.txt
index 29b62170dd16..ff81bf53a1ff 100644
--- a/games/emptyepsilon/files/patch-sproton_libs_basis__universal_CMakeLists.txt
+++ b/games/emptyepsilon/files/patch-sproton_libs_basis__universal_CMakeLists.txt
@@ -1,8 +1,6 @@
-- avoid fetch, use pre-installed meshoptimizer package, see https://github.com/daid/SeriousProton/issues/253
-
---- sproton/libs/basis_universal/CMakeLists.txt.orig	2024-12-09 20:23:38 UTC
-+++ sproton/libs/basis_universal/CMakeLists.txt
-@@ -5,7 +5,7 @@ set(BASIS_URL "https://github.com/BinomialLLC/basis_un
+--- sproton/libs/basis_universal/CMakeLists.txt.orig	2025-12-05 12:11:01.680012000 -0800
++++ sproton/libs/basis_universal/CMakeLists.txt	2025-12-05 12:11:01.722728000 -0800
+@@ -5,7 +5,7 @@
  
  set(BASIS_VERSION "v1_15_update2")
  set(BASIS_URL "https://github.com/BinomialLLC/basis_universal")
@@ -11,3 +9,31 @@
      include(FetchContent)
      FetchContent_Declare(
          basis
+@@ -14,18 +14,21 @@
+     )
+     FetchContent_GetProperties(basis)
+ else()
+-    set(BASIS_BASE_PATH "${EXTERNALS_DIR}")
+-    set(basis_POPULATED FALSE)
+-    if(NOT EXISTS "${BASIS_BASE_PATH}/basis/CMakeLists.txt")
++    if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/../../SeriousProton/externals/basis/CMakeLists.txt")
++        set(basis_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../SeriousProton/externals/basis")
++        set(basis_BINARY_DIR "${PROJECT_BINARY_DIR}/externals/basis")
++        set(basis_POPULATED TRUE)
++    else()
++        set(BASIS_BASE_PATH "${EXTERNALS_DIR}")
++        set(basis_POPULATED FALSE)
+         set(BASIS_ZIP "${DOWNLOADS_DIR}/basis.zip")
+         file(DOWNLOAD "${BASIS_URL}/archive/refs/tags/${BASIS_VERSION}.zip" "${BASIS_ZIP}" TIMEOUT 60 TLS_VERIFY ON)
+ 
+         file(MAKE_DIRECTORY "${BASIS_BASE_PATH}/basis")
+         execute_process(COMMAND ${CMAKE_COMMAND} -E tar -xf "${BASIS_ZIP}" WORKING_DIRECTORY "${BASIS_BASE_PATH}")
++        set(basis_SOURCE_DIR "${BASIS_BASE_PATH}/basis")
++        set(basis_BINARY_DIR "${PROJECT_BINARY_DIR}/externals/basis")
+     endif()
+-
+-    set(basis_SOURCE_DIR "${BASIS_BASE_PATH}/basis")
+-    set(basis_BINARY_DIR "${PROJECT_BINARY_DIR}/externals/basis")
+ endif()
+ 
+ if(NOT basis_POPULATED)