Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

higan: fix darwin build #83638

Merged
merged 1 commit into from Mar 29, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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 @@ -26305,6 +26305,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