From b2235ef7d6b79daf6e7f46439891fba622a8e786 Mon Sep 17 00:00:00 2001 From: Adam Faiz Date: Wed, 28 Aug 2024 23:34:09 +0800 Subject: gnu: openclonk: Fix build. * gnu/packages/games.scm (openclonk): Fix build. [source]: Unbundle dependencies and include the header where necessary to fix the build. [arguments]<#:phases>: Remove workarounds for bundled backward-cpp. [inputs]: Remove dependencies for bundled backward-cpp. Add libb2, pcg-cpp, and c-template-sort. Signed-off-by: Liliana Marie Prikler --- gnu/packages/games.scm | 62 +++++++++++++++++++++++++++----------------------- 1 file changed, 33 insertions(+), 29 deletions(-) (limited to 'gnu/packages') diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 15c1175bb6..f875331096 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -122,6 +122,7 @@ (define-module (gnu packages games) #:use-module (gnu packages bash) #:use-module (gnu packages bison) #:use-module (gnu packages boost) + #:use-module (gnu packages c) #:use-module (gnu packages check) #:use-module (gnu packages cmake) #:use-module (gnu packages compression) @@ -9383,7 +9384,32 @@ (define-public openclonk "openclonk-" version "-src.tar.bz2")) (sha256 (base32 - "0imkqjp8lww5p0cnqf4k4mb2v682mnsas63qmiz17rspakr7fxik")))) + "0imkqjp8lww5p0cnqf4k4mb2v682mnsas63qmiz17rspakr7fxik")) + (modules '((guix build utils))) + (snippet + #~(begin + (delete-file-recursively "thirdparty") + (substitute* "CMakeLists.txt" + (("add_subdirectory\\(thirdparty/.*\\)") "") + (("set_property\\(.*Third-party.*\\)") "") + (("blake2") "b2") + (("thirdparty/timsort/sort\\.h") "") + (("thirdparty/pcg/.*\\.hpp") "")) + (substitute* '("src/lib/C4Random.cpp" + "src/landscape/C4Particles.h") + (("#include ") + "#include ")) + (substitute* "src/script/C4ScriptLibraries.cpp" + (("blake2b.hash_output.get.., raw_output_length, data, data_length, nullptr, 0.") + "blake2b(hash_output.get(), (const void*)raw_output_length, data, data_length, (size_t)(0), 0)")) + (substitute* '("src/script/C4AulParse.cpp" + "src/editor/C4EditCursor.cpp" + "src/gui/C4ScriptGuiWindow.cpp") + (("#include .C4Include\\.h." all) + (string-append "#include \n" all))) + (substitute* "src/lib/StdMesh.cpp" + (("#include .timsort/sort\\.h.") + "#include ")))))) (build-system cmake-build-system) (arguments `(#:configure-flags '("-DAudio_TK=OpenAL") @@ -9402,30 +9428,7 @@ (define-public openclonk (("PATH_SUFFIXES \"src\" \"gtest\"") "PATH_SUFFIXES \"src\"")) #t)) - (add-after 'unpack 'adjust-backward-cpp-includes - (lambda _ - ;; XXX: The bundled backward-cpp exports a CMake "interface" - ;; that includes external libraries such as libdl from glibc. - ;; By default, CMake interface includes are treated as "system - ;; headers", and GCC behaves poorly when glibc is passed as a - ;; system header (causing #include_next failures). - - ;; Here we prevent targets that consume the Backward::Backward - ;; interface from treating it as "system includes". - (substitute* "CMakeLists.txt" - (("target_link_libraries\\((.+) Backward::Backward\\)" all target) - (string-append "set_property(TARGET " target " PROPERTY " - "NO_SYSTEM_FROM_IMPORTED true)\n" - all))) - #t)) - (add-after 'unpack 'add-libiberty - ;; Build fails upon linking executables without this. - (lambda _ - (substitute* "thirdparty/backward-cpp/BackwardConfig.cmake" - (("set\\(LIBBFD_LIBRARIES (.*?)\\)" _ libraries) - (string-append "set(LIBBFD_LIBRARIES " libraries " iberty)"))) - #t)) - (add-after 'add-libiberty 'lax-freealut-requirement + (add-after 'prepare-gmock 'lax-freealut-requirement ;; TODO: We provide freealut 1.1.0, but pkg-config somehow detects ;; it as 1.0.1. Force minimal version. (lambda _ @@ -9447,10 +9450,11 @@ (define-public openclonk ("googletest" ,googletest) ("pkg-config" ,pkg-config))) (inputs - `(("freealut" ,freealut) + `(("c-template-sort" ,c-template-sort) + ("freealut" ,freealut) ("freetype" ,freetype) ("glew" ,glew) - ("libiberty" ,libiberty) + ("libb2" ,libb2) ("libjpeg" ,libjpeg-turbo) ("libogg" ,libogg) ("libpng" ,libpng) @@ -9459,11 +9463,11 @@ (define-public openclonk ("mesa" ,mesa) ("miniupnpc" ,miniupnpc) ("openal" ,openal) + ("pcg-cpp" ,pcg-cpp) ("qtbase" ,qtbase-5) ("readline" ,readline) ("sdl" ,sdl2) - ("tinyxml" ,tinyxml) - ("zlib" ,zlib))) + ("tinyxml" ,tinyxml))) (home-page "https://www.openclonk.org/") (synopsis "Multiplayer action game where you control small and nimble humanoids") -- cgit v1.2.3