Skip to content

Commit

Permalink
Merge pull request #83638 from veprbl/pr/higan_darwin_fix
Browse files Browse the repository at this point in the history
higan: fix darwin build
  • Loading branch information
Mic92 committed Mar 29, 2020
2 parents 30c17b6 + 4c931a8 commit fd708a3
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 14 deletions.
51 changes: 37 additions & 14 deletions pkgs/misc/emulators/higan/default.nix
@@ -1,8 +1,9 @@
{ stdenv, fetchurl
, p7zip, pkgconfig
, p7zip, pkgconfig, libicns
, libX11, libXv
, udev
, libGLU, libGL, SDL
, Carbon, Cocoa, OpenGL, OpenAL
, libao, openal, libpulseaudio
, gtk2, gtksourceview
, runtimeShell }:
Expand All @@ -21,11 +22,24 @@ stdenv.mkDerivation rec {
};

patches = [ ./0001-change-flags.diff ];
postPatch = "sed '1i#include <cmath>' -i higan/fc/ppu/ppu.cpp";
postPatch = ''
sed '1i#include <cmath>' -i higan/fc/ppu/ppu.cpp
for file in icarus/GNUmakefile higan/target-tomoko/GNUmakefile; do
substituteInPlace "$file" \
--replace 'sips -s format icns data/$(name).png --out out/$(name).app/Contents/Resources/$(name).icns' \
'png2icns out/$(name).app/Contents/Resources/$(name).icns data/$(name).png'
done
'';

nativeBuildInputs = [ p7zip pkgconfig ]
++ optional stdenv.isDarwin [ libicns ];

buildInputs =
[ p7zip pkgconfig libX11 libXv udev libGLU libGL
SDL libao openal libpulseaudio gtk2 gtksourceview ];
[ SDL libao ]
++ optionals stdenv.isLinux [ openal libpulseaudio udev libX11 libXv libGLU libGL gtk2 gtksourceview ]
++ optionals stdenv.isDarwin [ Carbon Cocoa OpenGL OpenAL ]
;

unpackPhase = ''
7z x $src
Expand All @@ -38,27 +52,36 @@ stdenv.mkDerivation rec {
'';

# Now the cheats file will be distributed separately
installPhase = ''
install -dm 755 $out/bin $out/share/applications $out/share/higan $out/share/pixmaps
install -m 755 icarus/out/icarus $out/bin/
install -m 755 higan/out/higan $out/bin/
install -m 644 higan/data/higan.desktop $out/share/applications/
install -m 644 higan/data/higan.png $out/share/pixmaps/higan-icon.png
install -m 644 higan/resource/logo/higan.png $out/share/pixmaps/higan-logo.png
installPhase = (if !stdenv.isDarwin then ''
mkdir -p "$out"/bin "$out"/share/applications "$out"/share/pixmaps
install -m 755 icarus/out/icarus "$out"/bin/
install -m 755 higan/out/higan "$out"/bin/
install -m 644 higan/data/higan.desktop "$out"/share/applications/
install -m 644 higan/data/higan.png "$out"/share/pixmaps/higan-icon.png
install -m 644 higan/resource/logo/higan.png "$out"/share/pixmaps/higan-logo.png
'' else ''
mkdir "$out"
mv higan/out/higan.app "$out"/
mv icarus/out/icarus.app "$out"/
'') + ''
mkdir -p "$out"/share/higan
cp --recursive --no-dereference --preserve='links' --no-preserve='ownership' \
higan/systems/* $out/share/higan/
higan/systems/* "$out"/share/higan/
'';

fixupPhase = ''
fixupPhase = let
dest = if !stdenv.isDarwin then "\\$HOME/.local/share/higan" else "\\$HOME/Library/Application Support/higan";
in ''
# 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
mkdir -p "$out"/bin
cat <<EOF > $out/bin/higan-init.sh
#!${runtimeShell}
cp --recursive --update $out/share/higan/*.sys \$HOME/.local/share/higan/
cp --recursive --update $out/share/higan/*.sys "${dest}"/
EOF
Expand Down
1 change: 1 addition & 0 deletions pkgs/top-level/all-packages.nix
Expand Up @@ -26090,6 +26090,7 @@ in

higan = callPackage ../misc/emulators/higan {
inherit (gnome2) gtksourceview;
inherit (darwin.apple_sdk.frameworks) Carbon Cocoa OpenGL OpenAL;
};

bullet = callPackage ../development/libraries/bullet {
Expand Down

0 comments on commit fd708a3

Please sign in to comment.