3
0
Fork 0
forked from mirrors/nixpkgs

Merge pull request #220750 from Netruk44/openmw-darwin-support

openmw: darwin support
This commit is contained in:
Weijia Wang 2023-03-16 00:28:34 +02:00 committed by GitHub
commit 47ca1928a0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 34 additions and 7 deletions

View file

@ -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;

View file

@ -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;
};
}

View file

@ -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;
};
}

View file

@ -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 { };