Higan: adding "profile" and "gui" building options
Also, removing builder.sh and copying everything to Nix expression. Closes #4048
This commit is contained in:
parent
1e5452865b
commit
4f85f64153
@ -1,35 +0,0 @@
|
|||||||
|
|
||||||
source $stdenv/setup
|
|
||||||
|
|
||||||
unpackPhase
|
|
||||||
cd $sourceName
|
|
||||||
make phoenix=gtk profile=accuracy -C ananke
|
|
||||||
make phoenix=gtk profile=accuracy
|
|
||||||
|
|
||||||
install -dm 755 $out/share/applications $out/share/pixmaps $out/share/higan/Video\ Shaders $out/bin $out/lib
|
|
||||||
|
|
||||||
install -m 644 data/higan.desktop $out/share/applications/
|
|
||||||
install -m 644 data/higan.png $out/share/pixmaps/
|
|
||||||
cp -dr --no-preserve=ownership profile/* data/cheats.bml $out/share/higan/
|
|
||||||
cp -dr --no-preserve=ownership shaders/*.shader $out/share/higan/Video\ Shaders/
|
|
||||||
|
|
||||||
install -m 755 out/higan $out/bin/higan
|
|
||||||
install -m 644 ananke/libananke.so $out/lib/libananke.so.1
|
|
||||||
(cd $out/lib && ln -s libananke.so.1 libananke.so)
|
|
||||||
oldRPath=$(patchelf --print-rpath $out/bin/higan)
|
|
||||||
patchelf --set-rpath $oldRPath:$out/lib $out/bin/higan
|
|
||||||
|
|
||||||
# A dirty workaround, suggested by @cpages:
|
|
||||||
# we create a first-run script to populate
|
|
||||||
# the local $HOME with all the auxiliary
|
|
||||||
# stuff needed by higan at runtime
|
|
||||||
|
|
||||||
cat <<EOF > $out/bin/higan-config.sh
|
|
||||||
#!${shell}
|
|
||||||
|
|
||||||
cp --update --recursive $out/share/higan \$HOME/.config
|
|
||||||
chmod --recursive u+w \$HOME/.config/higan
|
|
||||||
|
|
||||||
EOF
|
|
||||||
|
|
||||||
chmod +x $out/bin/higan-config.sh
|
|
@ -2,9 +2,14 @@
|
|||||||
, pkgconfig
|
, pkgconfig
|
||||||
, libX11, libXv
|
, libX11, libXv
|
||||||
, udev
|
, udev
|
||||||
, mesa, gtk, SDL
|
, mesa, SDL
|
||||||
, libao, openal, pulseaudio
|
, libao, openal, pulseaudio
|
||||||
}:
|
, profile ? "accuracy" # Options: accuracy, balanced, performance
|
||||||
|
, gui ? "gtk" # can be gtk or qt4
|
||||||
|
, gtk ? null, qt4 ? null }:
|
||||||
|
|
||||||
|
assert gui == "gtk" || gui == "qt4";
|
||||||
|
assert (gui == "gtk" -> gtk != null) || (gui == "qt4" -> qt4 != null);
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
|
|
||||||
@ -19,11 +24,48 @@ stdenv.mkDerivation rec {
|
|||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = with stdenv.lib;
|
buildInputs = with stdenv.lib;
|
||||||
[ pkgconfig libX11 libXv udev mesa gtk SDL libao openal pulseaudio ];
|
[ pkgconfig libX11 libXv udev mesa SDL libao openal pulseaudio ]
|
||||||
|
++ optionals (gui == "gtk") [ gtk ]
|
||||||
|
++ optionals (gui == "qt4") [ qt4 ];
|
||||||
|
|
||||||
builder = ./builder.sh;
|
buildPhase = ''
|
||||||
|
make phoenix=${gui} profile=${profile} -C ananke
|
||||||
|
make phoenix=${gui} profile=${profile}
|
||||||
|
'';
|
||||||
|
|
||||||
meta = {
|
installPhase = ''
|
||||||
|
install -dm 755 $out/share/applications $out/share/pixmaps $out/share/higan/Video\ Shaders $out/bin $out/lib
|
||||||
|
|
||||||
|
install -m 644 data/higan.desktop $out/share/applications/
|
||||||
|
install -m 644 data/higan.png $out/share/pixmaps/
|
||||||
|
cp -dr --no-preserve=ownership profile/* data/cheats.bml $out/share/higan/
|
||||||
|
cp -dr --no-preserve=ownership shaders/*.shader $out/share/higan/Video\ Shaders/
|
||||||
|
|
||||||
|
install -m 755 out/higan $out/bin/higan
|
||||||
|
install -m 644 ananke/libananke.so $out/lib/libananke.so.1
|
||||||
|
(cd $out/lib && ln -s libananke.so.1 libananke.so)
|
||||||
|
'';
|
||||||
|
|
||||||
|
fixupPhase = ''
|
||||||
|
oldRPath=$(patchelf --print-rpath $out/bin/higan)
|
||||||
|
patchelf --set-rpath $oldRPath:$out/lib $out/bin/higan
|
||||||
|
|
||||||
|
# A dirty workaround, suggested by @cpages:
|
||||||
|
# we create a first-run script to populate
|
||||||
|
# the local $HOME with all the auxiliary
|
||||||
|
# stuff needed by higan at runtime
|
||||||
|
|
||||||
|
cat <<EOF > $out/bin/higan-init.sh
|
||||||
|
#!${stdenv.shell}
|
||||||
|
|
||||||
|
cp --update --recursive $out/share/higan \$HOME/.config
|
||||||
|
chmod --recursive u+w \$HOME/.config/higan
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod +x $out/bin/higan-init.sh
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
description = "An open-source, cycle-accurate Nintendo multi-system emulator";
|
description = "An open-source, cycle-accurate Nintendo multi-system emulator";
|
||||||
longDescription = ''
|
longDescription = ''
|
||||||
Higan (formerly bsnes) is a Nintendo multi-system emulator.
|
Higan (formerly bsnes) is a Nintendo multi-system emulator.
|
||||||
@ -34,16 +76,15 @@ stdenv.mkDerivation rec {
|
|||||||
Super Game Boy; BS-X Satellaview; Sufami Turbo
|
Super Game Boy; BS-X Satellaview; Sufami Turbo
|
||||||
'';
|
'';
|
||||||
homepage = http://byuu.org/higan/;
|
homepage = http://byuu.org/higan/;
|
||||||
license = stdenv.lib.licenses.gpl3Plus;
|
license = licenses.gpl3Plus;
|
||||||
maintainers = [ stdenv.lib.maintainers.AndersonTorres ];
|
maintainers = [ maintainers.AndersonTorres ];
|
||||||
platforms = stdenv.lib.platforms.linux;
|
platforms = platforms.linux;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
# TODO:
|
# TODO:
|
||||||
# - options to choose profiles (accuracy, balanced, performance)
|
|
||||||
# and different GUIs (gtk2, qt4)
|
|
||||||
# - fix the BML and BIOS paths - maybe submitting
|
# - fix the BML and BIOS paths - maybe submitting
|
||||||
# a custom patch to Higan project would not be a bad idea...
|
# a custom patch to Higan project would not be a bad idea...
|
||||||
|
# - config.higan.{gui,profile} options
|
||||||
#
|
#
|
||||||
|
@ -11951,7 +11951,10 @@ let
|
|||||||
|
|
||||||
snes9x-gtk = callPackage ../misc/emulators/snes9x-gtk { };
|
snes9x-gtk = callPackage ../misc/emulators/snes9x-gtk { };
|
||||||
|
|
||||||
higan = callPackage ../misc/emulators/higan { };
|
higan = callPackage ../misc/emulators/higan {
|
||||||
|
profile = "accuracy";
|
||||||
|
gui = "gtk";
|
||||||
|
};
|
||||||
|
|
||||||
misc = import ../misc/misc.nix { inherit pkgs stdenv; };
|
misc = import ../misc/misc.nix { inherit pkgs stdenv; };
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user