about summary refs log tree commit diff
diff options
context:
space:
mode:
authorWeijia Wang <9713184+wegank@users.noreply.github.com>2023-03-16 00:28:34 +0200
committerGitHub <noreply@github.com>2023-03-16 00:28:34 +0200
commit47ca1928a064042ddbd9ba032032ad7fdd13ae5b (patch)
treef14097d2ce5b0c241f3315f4c810407eca092363
parentc7bf74ae687437f916c5f1f2a65f44cc6bfeeecc (diff)
parentfb9bcc72fda42e7cf6e54f293b6b68b5f0c71aae (diff)
Merge pull request #220750 from Netruk44/openmw-darwin-support
openmw: darwin support
-rw-r--r--pkgs/development/libraries/recastnavigation/default.nix12
-rw-r--r--pkgs/games/openmw/default.nix23
-rw-r--r--pkgs/tools/archivers/unshield/default.nix2
-rw-r--r--pkgs/top-level/all-packages.nix4
4 files changed, 34 insertions, 7 deletions
diff --git a/pkgs/development/libraries/recastnavigation/default.nix b/pkgs/development/libraries/recastnavigation/default.nix
index 59f39986ffcdd..8e0fe7947f440 100644
--- a/pkgs/development/libraries/recastnavigation/default.nix
+++ b/pkgs/development/libraries/recastnavigation/default.nix
@@ -4,13 +4,13 @@ stdenv.mkDerivation rec {
   pname = "recastai";
   # use latest revision for the CMake build process and OpenMW
   # OpenMW use e75adf86f91eb3082220085e42dda62679f9a3ea
-  version = "unstable-2021-03-05";
+  version = "unstable-2023-01-02";
 
   src = fetchFromGitHub {
     owner = "recastnavigation";
     repo = "recastnavigation";
-    rev = "c5cbd53024c8a9d8d097a4371215e3342d2fdc87";
-    sha256 = "sha256-QP3lMMFR6fiKQTksAkRL6X9yaoVz2xt4QSIP9g6piww=";
+    rev = "405cc095ab3a2df976a298421974a2af83843baf";
+    sha256 = "sha256-WVzDI7+UuAl10Tm1Zjkea/FMk0cIe7pWg0iyFLbwAdI=";
   };
 
   postPatch = ''
@@ -20,6 +20,11 @@ stdenv.mkDerivation rec {
     substituteInPlace CMakeLists.txt \
       --replace '\$'{exec_prefix}/'$'{CMAKE_INSTALL_LIBDIR} '$'{CMAKE_INSTALL_FULL_LIBDIR} \
       --replace '\$'{prefix}/'$'{CMAKE_INSTALL_INCLUDEDIR} '$'{CMAKE_INSTALL_FULL_INCLUDEDIR}
+  '' + lib.optionalString stdenv.hostPlatform.isDarwin ''
+    # Expects SDL2.framework in specific location, which we don't have
+    # Change where SDL2 headers are searched for to match what we do have
+    substituteInPlace RecastDemo/CMakeLists.txt \
+      --replace 'include_directories(''${SDL2_LIBRARY}/Headers)' 'include_directories(${SDL2.dev}/include/SDL2)'
   '';
 
   doCheck = true;
@@ -29,7 +34,6 @@ stdenv.mkDerivation rec {
   buildInputs = [ libGL SDL2 libGLU ];
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
     homepage = "https://github.com/recastnavigation/recastnavigation";
     description = "Navigation-mesh Toolset for Games";
     license = licenses.zlib;
diff --git a/pkgs/games/openmw/default.nix b/pkgs/games/openmw/default.nix
index 8df88c92ff1c4..3f6ce29c3a333 100644
--- a/pkgs/games/openmw/default.nix
+++ b/pkgs/games/openmw/default.nix
@@ -1,4 +1,5 @@
 { lib
+, stdenv
 , mkDerivation
 , fetchFromGitHub
 , fetchpatch
@@ -16,6 +17,7 @@
 , libXt
 , lz4
 , recastnavigation
+, VideoDecodeAcceleration
 }:
 
 let
@@ -27,6 +29,15 @@ let
         rev = "bbe61c3bc510a4f5bb4aea21cce506519c2d24e6";
         sha256 = "sha256-t3smLqstp7wWfi9HXJoBCek+3acqt/ySBYF8RJOG6Mo=";
       };
+      patches = [
+        (fetchpatch {
+          # For Darwin, OSG doesn't build some plugins as they're redundant with QuickTime.
+          # OpenMW doesn't like this, and expects them to be there. Apply their patch for it.
+          name = "darwin-osg-plugins-fix.patch";
+          url = "https://gitlab.com/OpenMW/openmw-dep/-/raw/0abe3c9c3858211028d881d7706813d606335f72/macos/osg.patch";
+          sha256 = "sha256-/CLRZofZHot8juH78VG1/qhTHPhy5DoPMN+oH8hC58U=";
+        })
+      ];
     });
 
   bullet_openmw = bullet.overrideDerivation (old: rec {
@@ -65,10 +76,16 @@ mkDerivation rec {
 
   postPatch = ''
     sed '1i#include <memory>' -i components/myguiplatform/myguidatamanager.cpp # gcc12
+  '' + lib.optionalString stdenv.isDarwin ''
+    # Don't fix Darwin app bundle
+    sed -i '/fixup_bundle/d' CMakeLists.txt
   '';
 
   nativeBuildInputs = [ cmake pkg-config wrapQtAppsHook ];
 
+  # If not set, OSG plugin .so files become shell scripts on Darwin.
+  dontWrapQtApps = true;
+
   buildInputs = [
     SDL2
     boost
@@ -81,12 +98,16 @@ mkDerivation rec {
     unshield
     lz4
     recastnavigation
+  ] ++ lib.optionals stdenv.isDarwin [
+    VideoDecodeAcceleration
   ];
 
   cmakeFlags = [
     # as of 0.46, openmw is broken with GLVND
     "-DOpenGL_GL_PREFERENCE=LEGACY"
     "-DOPENMW_USE_SYSTEM_RECASTNAVIGATION=1"
+  ] ++ lib.optionals stdenv.isDarwin [
+    "-DOPENMW_OSX_DEPLOYMENT=ON"
   ];
 
   meta = with lib; {
@@ -94,6 +115,6 @@ mkDerivation rec {
     homepage = "https://openmw.org";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ abbradar marius851000 ];
-    platforms = platforms.linux;
+    platforms = platforms.linux ++ platforms.darwin;
   };
 }
diff --git a/pkgs/tools/archivers/unshield/default.nix b/pkgs/tools/archivers/unshield/default.nix
index 17d4e7854381c..b3d023df59b78 100644
--- a/pkgs/tools/archivers/unshield/default.nix
+++ b/pkgs/tools/archivers/unshield/default.nix
@@ -18,6 +18,6 @@ stdenv.mkDerivation rec {
     description = "Tool and library to extract CAB files from InstallShield installers";
     homepage = "https://github.com/twogood/unshield";
     license = licenses.mit;
-    platforms = platforms.linux;
+    platforms = platforms.linux ++ platforms.darwin;
   };
 }
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index f6df133869b1d..1ce71032d5e79 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -35850,7 +35850,9 @@ with pkgs;
 
   openloco = pkgsi686Linux.callPackage ../games/openloco { };
 
-  openmw = libsForQt5.callPackage ../games/openmw { };
+  openmw = libsForQt5.callPackage ../games/openmw {
+    inherit (darwin.apple_sdk.frameworks) VideoDecodeAcceleration;
+  };
 
   openmw-tes3mp = libsForQt5.callPackage ../games/openmw/tes3mp.nix { };