From 8112bb92f9df718eaa077ec77109eecc60240a72 Mon Sep 17 00:00:00 2001 From: Mark Vainomaa Date: Sun, 12 Sep 2021 00:31:31 +0300 Subject: eduke32: implement proper macOS support --- pkgs/games/eduke32/default.nix | 41 +++++++++++++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 6 deletions(-) (limited to 'pkgs/games') diff --git a/pkgs/games/eduke32/default.nix b/pkgs/games/eduke32/default.nix index 8c7a79ff982..40a412c6b54 100644 --- a/pkgs/games/eduke32/default.nix +++ b/pkgs/games/eduke32/default.nix @@ -1,6 +1,8 @@ { lib, stdenv, fetchurl, makeWrapper, pkg-config, nasm, makeDesktopItem , alsa-lib, flac, gtk2, libvorbis, libvpx, libGLU, libGL -, SDL2, SDL2_mixer }: +, SDL2, SDL2_mixer +, AGL, Cocoa, GLUT, OpenGL +}: let desktopItem = makeDesktopItem { @@ -25,12 +27,28 @@ in stdenv.mkDerivation rec { sha256 = "0fdl2i465cl5x7129772ksx97lvim98m9009q5cfmf6scagj9pvz"; }; - buildInputs = [ alsa-lib flac gtk2 libvorbis libvpx libGL libGLU SDL2 SDL2_mixer ]; + buildInputs = [ + flac + libvorbis + libvpx + SDL2 + SDL2_mixer + ] ++ lib.optionals stdenv.isLinux [ + alsa-lib + gtk2 + libGL + libGLU + ] ++ lib.optionals stdenv.isDarwin [ + AGL + Cocoa + GLUT + OpenGL + ]; nativeBuildInputs = [ makeWrapper pkg-config ] ++ lib.optional (stdenv.hostPlatform.system == "i686-linux") nasm; - postPatch = '' + postPatch = lib.optionalString stdenv.isLinux '' substituteInPlace source/build/src/glbuild.cpp \ --replace libGLU.so ${libGLU}/lib/libGLU.so @@ -44,6 +62,9 @@ in stdenv.mkDerivation rec { makeFlags = [ "SDLCONFIG=${SDL2}/bin/sdl2-config" + ] ++ lib.optionals stdenv.isDarwin [ + # broken, see: https://github.com/NixOS/nixpkgs/issues/19098 + "LTO=0" ]; enableParallelBuilding = true; @@ -52,7 +73,7 @@ in stdenv.mkDerivation rec { runHook preInstall install -Dm755 -t $out/bin eduke32 mapster32 - + '' + lib.optionalString stdenv.isLinux '' makeWrapper $out/bin/eduke32 $out/bin/${wrapper} \ --set-default EDUKE32_DATA_DIR /var/lib/games/eduke32 \ --add-flags '-g "$EDUKE32_DATA_DIR/DUKE3D.GRP"' @@ -60,7 +81,16 @@ in stdenv.mkDerivation rec { cp -rv ${desktopItem}/share $out substituteInPlace $out/share/applications/eduke32.desktop \ --subst-var out + '' + lib.optionalString stdenv.isDarwin '' + mkdir -p $out/Applications/EDuke32.app/Contents/MacOS + mkdir -p $out/Applications/Mapster32.app/Contents/MacOS + + cp -r platform/Apple/bundles/EDuke32.app/* $out/Applications/EDuke32.app/ + cp -r platform/Apple/bundles/Mapster32.app/* $out/Applications/Mapster32.app/ + ln -sf $out/bin/eduke32 $out/Applications/EDuke32.app/Contents/MacOS/eduke32 + ln -sf $out/bin/mapster32 $out/Applications/Mapster32.app/Contents/MacOS/mapster32 + '' + '' runHook postInstall ''; @@ -68,8 +98,7 @@ in stdenv.mkDerivation rec { description = "Enhanched port of Duke Nukem 3D for various platforms"; homepage = "http://eduke32.com"; license = licenses.gpl2Plus; - maintainers = with maintainers; [ sander ]; - # Darwin is untested (supported by upstream) + maintainers = with maintainers; [ mikroskeem sander ]; platforms = platforms.all; }; } -- cgit 1.4.1