dev-games/openscenegraph-openmw: fix build w/ cmake-4

Respin Lua patch with an added option to avoid a CMake warning.

Closes: https://bugs.gentoo.org/960858
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
This commit is contained in:
Andreas Sturmlechner
2025-09-06 11:43:37 +02:00
parent 08aad29b03
commit 7a71ca4bec
7 changed files with 271 additions and 103 deletions

View File

@@ -1,12 +0,0 @@
--- a/CMakeModules/OsgMacroUtils.cmake
+++ b/CMakeModules/OsgMacroUtils.cmake
@@ -463,7 +463,7 @@ MACRO(SETUP_EXAMPLE EXAMPLE_NAME)
IF(APPLE)
INSTALL(TARGETS ${TARGET_TARGETNAME} RUNTIME DESTINATION share/OpenSceneGraph/bin BUNDLE DESTINATION share/OpenSceneGraph/bin )
ELSE(APPLE)
- INSTALL(TARGETS ${TARGET_TARGETNAME} RUNTIME DESTINATION share/OpenSceneGraph/bin COMPONENT openscenegraph-examples )
+ INSTALL(TARGETS ${TARGET_TARGETNAME} RUNTIME DESTINATION bin COMPONENT openscenegraph-examples )
IF(MSVC)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_TARGETNAME}${CMAKE_RELWITHDEBINFO_POSTFIX}.pdb DESTINATION share/OpenSceneGraph/bin COMPONENT openscenegraph-examples CONFIGURATIONS RelWithDebInfo)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_TARGETNAME}${CMAKE_DEBUG_POSTFIX}.pdb DESTINATION share/OpenSceneGraph/bin COMPONENT openscenegraph-examples CONFIGURATIONS Debug)

View File

@@ -1,73 +0,0 @@
From 1dfc0e3218e15b94f7b145c8f5b2bf61974b9573 Mon Sep 17 00:00:00 2001
From: Andreas Sturmlechner <asturm@gentoo.org>
Date: Sun, 23 Dec 2018 22:10:49 +0100
Subject: [PATCH 1/2] Add GNUInstallDirs for standard installation directories
Distributions are given standard variables for already existing hooks.
Multiarch libdirs is taken care of automagically.
Raises minimum cmake version by a little (2.8.5 is enough).
---
CMakeLists.txt | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 064d4e289..777265e0e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -13,7 +13,7 @@ SET(OPENSCENEGRAPH_RELEASE_CANDIDATE 0)
set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS TRUE)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8.0 FATAL_ERROR)
+CMAKE_MINIMUM_REQUIRED(VERSION 2.8.5 FATAL_ERROR)
if(COMMAND cmake_policy)
# Works around warnings libraries linked against that don't
@@ -767,6 +767,7 @@ ELSE()
# FIND_PACKAGE(PythonLibs)
ENDIF()
+INCLUDE(GNUInstallDirs)
# Include macro utilities here
INCLUDE(OsgMacroUtils)
--
2.20.1
From d2be900de7b5fb4e23d9429c02269f671962c670 Mon Sep 17 00:00:00 2001
From: Andreas Sturmlechner <asturm@gentoo.org>
Date: Sun, 23 Dec 2018 22:12:33 +0100
Subject: [PATCH 2/2] Replace OPENJPEG_INSTALL_DOC_DIR with
CMAKE_INSTALL_DOCDIR
This changes the default doc installdir to DATAROOTDIR/doc/PROJECT_NAME
---
CMakeLists.txt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 777265e0e..e1ed1bd51 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1180,7 +1180,7 @@ IF(BUILD_DOCUMENTATION)
${PROJECT_BINARY_DIR}/doc/OpenSceneGraphReferenceDocs/osg32-32.png COPYONLY
)
#INSTALL(FILES ${PROJECT_BINARY_DIR}/doc/${PROJECT_NAME}ReferenceDocs-${OPENSCENEGRAPH_VERSION}.chm DESTINATION doc OPTIONAL COMPONENT openscenegraph-doc)
- INSTALL(DIRECTORY ${PROJECT_BINARY_DIR}/doc/OpenSceneGraphReferenceDocs DESTINATION doc COMPONENT openscenegraph-doc)
+ INSTALL(DIRECTORY ${PROJECT_BINARY_DIR}/doc/OpenSceneGraphReferenceDocs DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT openscenegraph-doc)
# now set up openthreads documentation generation
IF(BUILD_REF_DOCS_TAGFILE)
@@ -1196,7 +1196,7 @@ IF(BUILD_DOCUMENTATION)
${PROJECT_BINARY_DIR}/doc/OpenThreadsReferenceDocs/osg32-32.png COPYONLY
)
#INSTALL(FILES ${PROJECT_BINARY_DIR}/doc/${PROJECT_NAME}ReferenceDocs-${OPENSCENEGRAPH_VERSION}.chm DESTINATION doc OPTIONAL COMPONENT openscenegraph-doc)
- INSTALL(DIRECTORY ${PROJECT_BINARY_DIR}/doc/OpenThreadsReferenceDocs DESTINATION doc COMPONENT openthreads-doc)
+ INSTALL(DIRECTORY ${PROJECT_BINARY_DIR}/doc/OpenThreadsReferenceDocs DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT openthreads-doc)
# Process our other doxyfiles but don't create targets for these
CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/doc/Doxyfiles/all_Doxyfile
--
2.20.1

View File

@@ -1,14 +0,0 @@
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -771,10 +771,7 @@
FIND_PACKAGE(LIBLAS)
IF (NOT(OSG_USE_LOCAL_LUA_SOURCE))
- FIND_PACKAGE(Lua52)
- IF (NOT (LUA_LIBRARIES AND LUA_INCLUDE_DIR))
- FIND_PACKAGE(Lua51)
- ENDIF()
+ FIND_PACKAGE(Lua ${LUA_VERSION} EXACT)
ENDIF()
# V8 and Python plugins are tests for linking against these libraries but aren't functionality beyond this.

View File

@@ -0,0 +1,41 @@
From e9120748f39cd0851701e8e18a1a1199b58c2f7e Mon Sep 17 00:00:00 2001
From: Alexey Sokolov <alexey+gentoo@asokolov.org>
Date: Thu, 22 Jul 2021 20:10:30 +0100
Subject: [PATCH] Fix find Gentoo system Lua
Add BUILD_OSG_LUA_PLUGIN option to silence warning about empty LUA_VERSION
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
---
CMakeLists.txt | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index da4f7f58a..a1f7408a5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -736,6 +736,7 @@ IF(WIN32 AND NOT ANDROID AND OSG_FIND_3RD_PARTY_DEPS)
INCLUDE(Find3rdPartyDependencies)
ENDIF()
+OPTION(BUILD_OSG_LUA_PLUGIN "Enable to build OSG lua plugin" ON)
OPTION(OSG_USE_LOCAL_LUA_SOURCE "Enable to use local Lua source when building the lua plugin" ON)
#
@@ -779,11 +780,8 @@ ELSE()
FIND_PACKAGE(PDAL CONFIG)
- IF (NOT(OSG_USE_LOCAL_LUA_SOURCE))
- FIND_PACKAGE(Lua52)
- IF (NOT (LUA_LIBRARIES AND LUA_INCLUDE_DIR))
- FIND_PACKAGE(Lua51)
- ENDIF()
+ IF (BUILD_OSG_LUA_PLUGIN AND NOT(OSG_USE_LOCAL_LUA_SOURCE))
+ FIND_PACKAGE(Lua ${LUA_VERSION} EXACT)
ENDIF()
# V8 and Python plugins are tests for linking against these libraries but aren't functionality beyond this.
--
2.51.0

View File

@@ -0,0 +1,51 @@
Source: https://github.com/OpenMW/osg/pull/32
From ef03c3442028dcfd6a861369926d0198bc4059cd Mon Sep 17 00:00:00 2001
From: Andreas Sturmlechner <asturm@gentoo.org>
Date: Sun, 7 Sep 2025 15:13:57 +0200
Subject: [PATCH 2/2] Use more GNUInstalldirs (CMAKE_INSTALL_DOCDIR)
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
---
CMakeLists.txt | 4 ++--
CMakeModules/OsgMacroUtils.cmake | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 478932641..4f6ca614b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1191,7 +1191,7 @@ IF(BUILD_DOCUMENTATION)
${PROJECT_BINARY_DIR}/doc/OpenSceneGraphReferenceDocs/osg32-32.png COPYONLY
)
#INSTALL(FILES ${PROJECT_BINARY_DIR}/doc/${PROJECT_NAME}ReferenceDocs-${OPENSCENEGRAPH_VERSION}.chm DESTINATION doc OPTIONAL COMPONENT openscenegraph-doc)
- INSTALL(DIRECTORY ${PROJECT_BINARY_DIR}/doc/OpenSceneGraphReferenceDocs DESTINATION doc COMPONENT openscenegraph-doc)
+ INSTALL(DIRECTORY ${PROJECT_BINARY_DIR}/doc/OpenSceneGraphReferenceDocs DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT openscenegraph-doc)
# now set up openthreads documentation generation
IF(BUILD_REF_DOCS_TAGFILE)
@@ -1207,7 +1207,7 @@ IF(BUILD_DOCUMENTATION)
${PROJECT_BINARY_DIR}/doc/OpenThreadsReferenceDocs/osg32-32.png COPYONLY
)
#INSTALL(FILES ${PROJECT_BINARY_DIR}/doc/${PROJECT_NAME}ReferenceDocs-${OPENSCENEGRAPH_VERSION}.chm DESTINATION doc OPTIONAL COMPONENT openscenegraph-doc)
- INSTALL(DIRECTORY ${PROJECT_BINARY_DIR}/doc/OpenThreadsReferenceDocs DESTINATION doc COMPONENT openthreads-doc)
+ INSTALL(DIRECTORY ${PROJECT_BINARY_DIR}/doc/OpenThreadsReferenceDocs DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT openthreads-doc)
# Process our other doxyfiles but don't create targets for these
CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/doc/Doxyfiles/all_Doxyfile
diff --git a/CMakeModules/OsgMacroUtils.cmake b/CMakeModules/OsgMacroUtils.cmake
index cafd8725b..1c2e6cb77 100644
--- a/CMakeModules/OsgMacroUtils.cmake
+++ b/CMakeModules/OsgMacroUtils.cmake
@@ -487,7 +487,7 @@ MACRO(SETUP_EXAMPLE EXAMPLE_NAME)
IF(APPLE)
INSTALL(TARGETS ${TARGET_TARGETNAME} RUNTIME DESTINATION share/OpenSceneGraph/bin BUNDLE DESTINATION share/OpenSceneGraph/bin )
ELSE(APPLE)
- INSTALL(TARGETS ${TARGET_TARGETNAME} RUNTIME DESTINATION share/OpenSceneGraph/bin COMPONENT openscenegraph-examples )
+ INSTALL(TARGETS ${TARGET_TARGETNAME} RUNTIME DESTINATION bin COMPONENT openscenegraph-examples )
IF(MSVC)
INSTALL(FILES $<TARGET_PDB_FILE:${TARGET_NAME}> DESTINATION share/OpenSceneGraph/bin COMPONENT openscenegraph-examples)
ENDIF(MSVC)
--
2.51.0

View File

@@ -0,0 +1,175 @@
Source: https://github.com/OpenMW/osg/pull/32
From d83a247904ac5eb3a38fe68c341a1f54c6e203a7 Mon Sep 17 00:00:00 2001
From: Andreas Sturmlechner <asturm@gentoo.org>
Date: Sun, 7 Sep 2025 15:01:03 +0200
Subject: [PATCH 1/2] Raise CMake minimum version req to 3.5 (lowest still
supported by >=CMake-4)
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
---
CMakeLists.txt | 81 ++++++-------------
.../Android/android.toolchain.cmake | 2 +-
examples/osgCMakeExample/CMakeLists.txt | 2 +-
examples/osgemscripten/CMakeLists.txt | 2 +-
4 files changed, 28 insertions(+), 59 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 21d2c05d4..478932641 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,8 @@
#
# OpenSceneGraph CMake build file
#
+CMAKE_MINIMUM_REQUIRED(VERSION 3.5 FATAL_ERROR)
+
SET(OPENSCENEGRAPH_MAJOR_VERSION 3)
SET(OPENSCENEGRAPH_MINOR_VERSION 6)
SET(OPENSCENEGRAPH_PATCH_VERSION 5)
@@ -13,27 +15,19 @@ SET(OPENSCENEGRAPH_RELEASE_CANDIDATE 0)
set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS TRUE)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8.0 FATAL_ERROR)
-
-if(COMMAND cmake_policy)
- # Works around warnings libraries linked against that don't
- # have absolute paths (e.g. -lpthreads)
- cmake_policy(SET CMP0003 NEW)
+# Works around warnings libraries linked against that don't
+# have absolute paths (e.g. -lpthreads)
+cmake_policy(SET CMP0003 NEW)
- # Works around warnings about escaped quotes in ADD_DEFINITIONS
- # statements.
- cmake_policy(SET CMP0005 NEW)
+# Works around warnings about escaped quotes in ADD_DEFINITIONS
+# statements.
+cmake_policy(SET CMP0005 NEW)
- # tell CMake to prefer CMake's own CMake modules when available
- # only available from cmake-2.8.4
- if("${CMAKE_VERSION}" VERSION_GREATER 2.8.3)
- cmake_policy(SET CMP0017 NEW)
- endif()
+cmake_policy(SET CMP0017 NEW)
- # INTERPROCEDURAL_OPTIMIZATION is enforced when enabled.
- # Allows passing -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON
- cmake_policy(SET CMP0069 NEW)
-endif()
+# INTERPROCEDURAL_OPTIMIZATION is enforced when enabled.
+# Allows passing -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON
+cmake_policy(SET CMP0069 NEW)
IF(APPLE)
# Get OSX version in MAJOR.MINOR format
@@ -155,6 +149,7 @@ IF(NOT CMAKE_BUILD_TYPE)
SET(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." FORCE)
ENDIF(NOT CMAKE_BUILD_TYPE)
+INCLUDE(GNUInstallDirs)
IF(ANDROID)
INCLUDE(OsgAndroidMacroUtils)
@@ -902,25 +897,8 @@ IF(DEFINED LIB_POSTFIX)
# Use LIB_POSTFIX if defined
SET(OSG_INSTALL_LIBDIR lib${LIB_POSTFIX})
ELSE()
- IF(CMAKE_VERSION VERSION_LESS "2.8.5")
- IF(UNIX AND NOT WIN32 AND NOT APPLE)
- IF(CMAKE_SIZEOF_VOID_P MATCHES "8")
- SET(LIB_POSTFIX "64" CACHE STRING "suffix for 32/64 dir placement")
- MARK_AS_ADVANCED(LIB_POSTFIX)
- ENDIF()
- ENDIF()
- IF(NOT DEFINED LIB_POSTFIX)
- SET(LIB_POSTFIX "")
- ENDIF()
- SET(OSG_INSTALL_LIBDIR lib${LIB_POSTFIX})
- ELSE()
- # Use the GNU standard installation directories for CMake >= 2.8.5
- INCLUDE(GNUInstallDirs)
- SET(OSG_INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR})
- ENDIF()
-ENDIF()
-IF(NOT DEFINED LIB_POSTFIX)
- SET(LIB_POSTFIX "")
+ SET(OSG_INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR})
+ SET(LIB_POSTFIX "")
ENDIF()
# Here we apparently do some funky stuff with making the bin/ and lib/
@@ -952,25 +930,16 @@ ELSE(WIN32)
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_LIBDIR})
ENDIF(WIN32)
-# Testing CMAKE_VERSION is possible in >= 2.6.4 only
-BUILDER_VERSION_GREATER(2 8 0)
-IF(VALID_BUILDER_VERSION) # If CMake >= 2.8.1
- FOREACH(CONF ${CMAKE_CONFIGURATION_TYPES}) # For each configuration (Debug, Release, MinSizeRel... and/or anything the user chooses)
- STRING(TOUPPER "${CONF}" CONF) # Go uppercase (DEBUG, RELEASE...)
- SET("CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CONF}" "${OUTPUT_LIBDIR}")
- SET("CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CONF}" "${OUTPUT_BINDIR}")
- IF(WIN32)
- SET("CMAKE_LIBRARY_OUTPUT_DIRECTORY_${CONF}" "${OUTPUT_BINDIR}")
- ELSE()
- SET("CMAKE_LIBRARY_OUTPUT_DIRECTORY_${CONF}" "${OUTPUT_LIBDIR}")
- ENDIF()
- ENDFOREACH()
-ENDIF(VALID_BUILDER_VERSION)
-
-#SET(INSTALL_BINDIR OpenSceneGraph/bin)
-#SET(INSTALL_INCDIR OpenSceneGraph/include)
-#SET(INSTALL_LIBDIR OpenSceneGraph/lib)
-#SET(INSTALL_DOCDIR OpenSceneGraph/doc)
+FOREACH(CONF ${CMAKE_CONFIGURATION_TYPES}) # For each configuration (Debug, Release, MinSizeRel... and/or anything the user chooses)
+ STRING(TOUPPER "${CONF}" CONF) # Go uppercase (DEBUG, RELEASE...)
+ SET("CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CONF}" "${OUTPUT_LIBDIR}")
+ SET("CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CONF}" "${OUTPUT_BINDIR}")
+ IF(WIN32)
+ SET("CMAKE_LIBRARY_OUTPUT_DIRECTORY_${CONF}" "${OUTPUT_BINDIR}")
+ ELSE()
+ SET("CMAKE_LIBRARY_OUTPUT_DIRECTORY_${CONF}" "${OUTPUT_LIBDIR}")
+ ENDIF()
+ENDFOREACH()
################################################################################
# User Options
diff --git a/PlatformSpecifics/Android/android.toolchain.cmake b/PlatformSpecifics/Android/android.toolchain.cmake
index fc349162f..7015e6d8f 100644
--- a/PlatformSpecifics/Android/android.toolchain.cmake
+++ b/PlatformSpecifics/Android/android.toolchain.cmake
@@ -210,7 +210,7 @@
# Modified by Lasse Oorni and Yao Wei Tjong for Urho3D
-cmake_minimum_required( VERSION 2.6.3 )
+cmake_minimum_required( VERSION 3.5 )
# Urho3D: on Windows Cygwin-based NDK tools may fail in the linking phase with too long command line. Turn on response files to avoid this
if( CMAKE_HOST_WIN32 )
diff --git a/examples/osgCMakeExample/CMakeLists.txt b/examples/osgCMakeExample/CMakeLists.txt
index cd843299a..418708630 100644
--- a/examples/osgCMakeExample/CMakeLists.txt
+++ b/examples/osgCMakeExample/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 2.6)
+cmake_minimum_required(VERSION 3.5)
SET(PROJECT_NAME osgCMakeExample)
diff --git a/examples/osgemscripten/CMakeLists.txt b/examples/osgemscripten/CMakeLists.txt
index b2bc9875a..10c4daf68 100644
--- a/examples/osgemscripten/CMakeLists.txt
+++ b/examples/osgemscripten/CMakeLists.txt
@@ -1,4 +1,4 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8.0 FATAL_ERROR)
+CMAKE_MINIMUM_REQUIRED(VERSION 3.5 FATAL_ERROR)
# Path to OpenSceneGraph
SET(OSG_DIR "${CMAKE_SOURCE_DIR}/../..")
--
2.51.0

View File

@@ -86,9 +86,9 @@ DEPEND="${RDEPEND}
"
PATCHES=(
"${FILESDIR}"/openscenegraph-3.6.3-cmake.patch
"${FILESDIR}"/openscenegraph-3.6.3-docdir.patch
"${FILESDIR}"/openscenegraph-3.6.5-cmake_lua_version.patch
"${FILESDIR}"/${P}-cmake4.patch # bug 960858
"${FILESDIR}"/${P}-cmake.patch # GNUInstalldirs, paths
"${FILESDIR}"/${P}-cmake-lua_version.patch # downstream patch
"${FILESDIR}"/openscenegraph-3.6-openexr3.patch
)
@@ -126,7 +126,7 @@ src_configure() {
$(cmake_use_find_package jpeg JPEG)
-DCMAKE_DISABLE_FIND_PACKAGE_Jasper=ON
$(cmake_use_find_package las LIBLAS)
$(cmake_use_find_package lua Lua)
-DBUILD_OSG_LUA_PLUGIN=$(usex lua)
-DCMAKE_DISABLE_FIND_PACKAGE_OpenCascade=ON
$(cmake_use_find_package openexr OpenEXR)
$(cmake_use_find_package openinventor Inventor)