about summary refs log tree commit diff
path: root/pkgs/games/openmw
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/games/openmw')
-rw-r--r--pkgs/games/openmw/tes3mp.nix6
-rw-r--r--pkgs/games/openmw/tes3mp.patch13
2 files changed, 19 insertions, 0 deletions
diff --git a/pkgs/games/openmw/tes3mp.nix b/pkgs/games/openmw/tes3mp.nix
index 222aa68dba24..59bdc6901078 100644
--- a/pkgs/games/openmw/tes3mp.nix
+++ b/pkgs/games/openmw/tes3mp.nix
@@ -50,6 +50,12 @@ in openmw.overrideAttrs (oldAttrs: rec {
     "-DRakNet_LIBRARY_DEBUG=${rakNetLibrary}/lib/libRakNetLibStatic.a"
   ];
 
+  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95175
+  patches = [
+    ./tes3mp.patch
+  ];
+  NIX_CFLAGS_COMPILE = "-fpermissive";
+
   preConfigure = ''
     substituteInPlace files/version.in \
       --subst-var-by OPENMW_VERSION_COMMITHASH ${compatHash}
diff --git a/pkgs/games/openmw/tes3mp.patch b/pkgs/games/openmw/tes3mp.patch
new file mode 100644
index 000000000000..c2a78f9db9b0
--- /dev/null
+++ b/pkgs/games/openmw/tes3mp.patch
@@ -0,0 +1,13 @@
+diff --git a/apps/openmw-mp/Script/Types.hpp b/apps/openmw-mp/Script/Types.hpp
+index be365cfb8..204dcdc7b 100644
+--- a/apps/openmw-mp/Script/Types.hpp
++++ b/apps/openmw-mp/Script/Types.hpp
+@@ -105,7 +105,7 @@ struct ScriptFunctionPointer : public ScriptIdentity
+     void *addr;
+ #if (!defined(__clang__) && defined(__GNUC__))
+     template<typename R, typename... Types>
+-    constexpr ScriptFunctionPointer(Function<R, Types...> addr) : ScriptIdentity(addr), addr((void*)(addr)) {}
++    constexpr ScriptFunctionPointer(Function<R, Types...> addr) : ScriptIdentity(addr), addr(addr) {}
+ #else
+     template<typename R, typename... Types>
+     constexpr ScriptFunctionPointer(Function<R, Types...> addr) : ScriptIdentity(addr), addr(addr) {}