d30e9aabf4
This is done by importing an old patch from Gentoo's Portage, and also rebuilding the `configure` script by using `autoreconfHook`
130 lines
3 KiB
Nix
130 lines
3 KiB
Nix
{ lib
|
|
, stdenv
|
|
, alsa-lib
|
|
, autoreconfHook
|
|
, fetchFromGitHub
|
|
, fetchpatch
|
|
, gtkmm3
|
|
, libepoxy
|
|
, libpng
|
|
, libX11
|
|
, libXv
|
|
, libXext
|
|
, libXinerama
|
|
, meson
|
|
, minizip
|
|
, ninja
|
|
, pkg-config
|
|
, portaudio
|
|
, pulseaudio
|
|
, SDL2
|
|
, wrapGAppsHook
|
|
, zlib
|
|
, withGtk ? false
|
|
}:
|
|
|
|
stdenv.mkDerivation rec {
|
|
pname =
|
|
if withGtk then
|
|
"snes9x-gtk"
|
|
else
|
|
"snes9x";
|
|
version = "1.61";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "snes9xgit";
|
|
repo = "snes9x";
|
|
rev = version;
|
|
fetchSubmodules = true;
|
|
sha256 = "1kay7aj30x0vn8rkylspdycydrzsc0aidjbs0dd238hr5hid723b";
|
|
};
|
|
|
|
patches = [
|
|
# Fix cross-compilation, otherwise it fails to detect host compiler features
|
|
# Doesn't affect non CC builds
|
|
(fetchpatch {
|
|
url = "https://mirror.its.dal.ca/gentoo-portage/games-emulation/snes9x/files/snes9x-1.53-cross-compile.patch";
|
|
sha256 = "sha256-ZCmnprimz8PtDIXkB1dYD0oura9icW81yKvJ4coKaDg=";
|
|
})
|
|
];
|
|
|
|
nativeBuildInputs = [
|
|
pkg-config
|
|
]
|
|
++ lib.optionals (!withGtk) [
|
|
autoreconfHook
|
|
]
|
|
++ lib.optionals withGtk [
|
|
meson
|
|
ninja
|
|
wrapGAppsHook
|
|
];
|
|
|
|
buildInputs = [
|
|
libX11
|
|
libXext
|
|
libXv
|
|
minizip
|
|
zlib
|
|
]
|
|
# on non-Linux platforms this will build without sound support on X11 build
|
|
++ lib.optionals stdenv.isLinux [
|
|
alsa-lib
|
|
pulseaudio
|
|
]
|
|
++ lib.optionals (!withGtk) [
|
|
libpng
|
|
libXinerama
|
|
]
|
|
++ lib.optionals withGtk [
|
|
gtkmm3
|
|
libepoxy
|
|
portaudio
|
|
SDL2
|
|
];
|
|
|
|
configureFlags =
|
|
lib.optional stdenv.hostPlatform.sse4_1Support "--enable-sse41"
|
|
++ lib.optional stdenv.hostPlatform.avx2Support "--enable-avx2";
|
|
|
|
installPhase = lib.optionalString (!withGtk) ''
|
|
runHook preInstall
|
|
|
|
install -Dm755 snes9x -t "$out/bin/"
|
|
install -Dm644 snes9x.conf.default -t "$out/share/doc/${pname}/"
|
|
install -Dm644 ../docs/{control-inputs,controls,snapshots}.txt -t \
|
|
"$out/share/doc/${pname}/"
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
preAutoreconf = lib.optionalString (!withGtk) "cd unix";
|
|
preConfigure = lib.optionalString withGtk "cd gtk";
|
|
|
|
enableParallelBuilding = true;
|
|
|
|
meta = with lib;
|
|
let
|
|
interface = if withGtk then "GTK" else "X11";
|
|
in
|
|
{
|
|
homepage = "https://www.snes9x.com";
|
|
description = "Super Nintendo Entertainment System (SNES) emulator, ${interface} version";
|
|
|
|
longDescription = ''
|
|
Snes9x is a portable, freeware Super Nintendo Entertainment System (SNES)
|
|
emulator. It basically allows you to play most games designed for the SNES
|
|
and Super Famicom Nintendo game systems on your PC or Workstation; which
|
|
includes some real gems that were only ever released in Japan.
|
|
|
|
Version build with ${interface} interface.
|
|
'';
|
|
|
|
license = licenses.unfreeRedistributable // {
|
|
url = "https://github.com/snes9xgit/snes9x/blob/${version}/LICENSE";
|
|
};
|
|
maintainers = with maintainers; [ qknight xfix thiagokokada ];
|
|
platforms = platforms.unix;
|
|
broken = (withGtk && stdenv.isDarwin);
|
|
};
|
|
}
|